PHP code example of aegisora / scalar-equality-rule-guardian

1. Go to this page and download the library: Download aegisora/scalar-equality-rule-guardian library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

aegisora / scalar-equality-rule-guardian example snippets


$guardian->check(
    $value,
    ScalarEqualityRule::createEqual($expectedValue),
    new ValuesNotEqualException()
);

$scalarEqualityRuleGuardian->checkEqual($value, $expectedValue, new ValuesNotEqualException());

use Aegisora\Guardian\Guardian;
use Aegisora\Guardian\Exceptions\GuardianValidationException;
use Aegisora\RuleGuardians\ScalarEqualityRule\ScalarEqualityRuleGuardian;

$guardian = new Guardian();

$scalarEqualityRuleGuardian = new ScalarEqualityRuleGuardian($guardian);

try {
    $scalarEqualityRuleGuardian->checkEqual($value, $expectedValue);
    // $value is strictly equal to $expectedValue
} catch (GuardianValidationException $exception) {
    // $value is not equal to $expectedValue
}

$scalarEqualityRuleGuardian->checkEqual(1, 1);       // passes
$scalarEqualityRuleGuardian->checkEqual(1, '1');     // fails (int vs string)
$scalarEqualityRuleGuardian->checkEqual(1.0, 1);     // fails (float vs int)
$scalarEqualityRuleGuardian->checkEqual(null, null); // passes

$scalarEqualityRuleGuardian->checkNotEqual(1, '1');  // passes
$scalarEqualityRuleGuardian->checkNotEqual(1, 1);    // fails

use Aegisora\Guardian\Guardian;
use Aegisora\RuleGuardians\ScalarEqualityRule\ScalarEqualityRuleGuardian;
use App\Exceptions\ValuesNotEqualException;

$guardian = new Guardian();

$scalarEqualityRuleGuardian = new ScalarEqualityRuleGuardian($guardian);

$scalarEqualityRuleGuardian->checkEqual(
    $value,
    $expectedValue,
    new ValuesNotEqualException()
);

use Aegisora\RuleGuardians\ScalarEqualityRule\ScalarEqualityRuleGuardian;
use App\Exceptions\InvalidConfirmationTokenException;

final class ConfirmationService
{
    private ScalarEqualityRuleGuardian $scalarEqualityRuleGuardian;

    public function __construct(
        ScalarEqualityRuleGuardian $scalarEqualityRuleGuardian
    ) {
        $this->scalarEqualityRuleGuardian = $scalarEqualityRuleGuardian;
    }

    public function confirm(string $providedToken, string $expectedToken): void
    {
        $this->scalarEqualityRuleGuardian->checkEqual(
            $providedToken,
            $expectedToken,
            new InvalidConfirmationTokenException()
        );

        // business logic for a confirmed action
    }
}

use Aegisora\Guardian\Exceptions\GuardianValidationException;

try {
    $scalarEqualityRuleGuardian->checkEqual($value, $expectedValue);
} catch (GuardianValidationException $exception) {
    echo $exception->getRuleCode(); // "scalar_equality_rule"
}

use App\Exceptions\ValuesNotEqualException;

try {
    $scalarEqualityRuleGuardian->checkEqual($value, $expectedValue, new ValuesNotEqualException());
} catch (ValuesNotEqualException $exception) {
    // domain-specific handling
}

use Aegisora\Guardian\Exceptions\GuardianExecutingRuleException;

try {
    $scalarEqualityRuleGuardian->checkEqual([], 1);
} catch (GuardianExecutingRuleException $exception) {
    // the rule could not be executed
}

/**
 * @param mixed $value
 * @param mixed $expectedValue
 * @throws GuardianExecutingRuleException
 * @throws GuardianValidationException
 * @throws \Throwable
 */
public function checkEqual($value, $expectedValue, ?\Throwable $exception = null): void

/**
 * @param mixed $value
 * @param mixed $expectedValue
 * @throws GuardianExecutingRuleException
 * @throws GuardianValidationException
 * @throws \Throwable
 */
public function checkNotEqual($value, $expectedValue, ?\Throwable $exception = null): void