1. Go to this page and download the library: Download horde/constraint 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/ */
horde / constraint example snippets
use Horde\Constraint\AllOf;
use Horde\Constraint\IsEqual;
use Horde\Constraint\PregMatch;
use Horde\Constraint\Not;
use Horde\Constraint\IsNull;
// Simple constraint
$constraint = new IsEqual('test');
$constraint->evaluate('test'); // true
$constraint->evaluate('other'); // false
// Compound constraints (AND)
$allOf = new AllOf(
new IsEqual('admin'),
new PregMatch('/^[a-z]+$/')
);
$allOf->evaluate('admin'); // true
// Compound constraints (OR)
$anyOf = new AnyOf(
new IsEqual('admin'),
new IsEqual('moderator')
);
$anyOf->evaluate('admin'); // true
// Negation
$notNull = new Not(new IsNull());
$notNull->evaluate('value'); // true
$notNull->evaluate(null); // false
$constraint = new Horde_Constraint_IsEqual('test');
$constraint->evaluate('test'); // true
$constraint = new AllOf(
new IsEqual('test'),
new AlwaysTrue()
);
$constraint = new AnyOf(
new IsEqual('foo'),
new IsEqual('bar')
);
$constraint = new Not(new IsEqual('forbidden'));
$constraint = new IsEqual(123);
$constraint->evaluate('123'); // true (loose comparison)
$constraint = new IsInstanceOf(stdClass::class);
$constraint->evaluate(new stdClass()); // true
$constraint = new IsNull();
$constraint->evaluate(null); // true
$constraint = new PregMatch('/^\d{3}-\d{4}$/');
$constraint->evaluate('555-1234'); // true
$constraint = new AlwaysTrue();
$constraint = new AlwaysFalse();
use Horde\Constraint\{AllOf, AnyOf, Not, IsEqual, PregMatch, IsNull};
// User must be admin OR moderator, AND account must be active
$rule = new AllOf(
new AnyOf(
new IsEqual('admin'),
new IsEqual('moderator')
),
new IsEqual('active')
);
// Validate
$role = 'admin';
$status = 'active';
$isValid = $rule->evaluate($role) && $rule->evaluate($status);
$constraint = new AllOf(
new IsEqual('value1'),
new IsEqual('value2')
);
// Add more constraints dynamically
$constraint->addConstraint(new IsEqual('value3'));
// Chaining
$constraint
->addConstraint(new IsEqual('value4'))
->addConstraint(new IsEqual('value5'));
interface Constraint
{
public function evaluate(mixed $value): bool;
}
$inner = new AllOf(new IsEqual(1), new IsEqual(2));
$outer = new AllOf(new IsEqual(3), $inner);
// Result: 3 constraints total (flattened), not 2 with nesting
// Before (PSR-0)
use Horde_Constraint_And;
use Horde_Constraint_PregMatch;
$constraint = new Horde_Constraint_And(
new Horde_Constraint_PregMatch('/pattern/')
);
// After (PSR-4 - recommended)
use Horde\Constraint\AllOf;
use Horde\Constraint\PregMatch;
$constraint = new AllOf(
new PregMatch('/pattern/')
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.