lithium\util\Validator::rule PHP Method

rule() public static method

Checks a single value against a single validation rule in one or more formats.
public static rule ( string $rule, mixed $value, string $format = 'any', array $options = [] ) : boolean
$rule string
$value mixed
$format string
$options array
return boolean Returns `true` or `false` indicating whether the validation rule check succeeded or failed.
    public static function rule($rule, $value, $format = 'any', array $options = array())
    {
        if (!isset(static::$_rules[$rule])) {
            throw new InvalidArgumentException("Rule `{$rule}` is not a validation rule.");
        }
        $defaults = isset(static::$_options[$rule]) ? static::$_options[$rule] : array();
        $options = (array) $options + $defaults + static::$_options['defaults'];
        $ruleCheck = static::$_rules[$rule];
        $ruleCheck = is_array($ruleCheck) ? $ruleCheck : array($ruleCheck);
        if (!$options['contains'] && !empty($ruleCheck)) {
            foreach ($ruleCheck as $key => $item) {
                $ruleCheck[$key] = is_string($item) ? "/^{$item}\$/" : $item;
            }
        }
        $params = compact('value', 'format', 'options');
        return static::_filter($rule, $params, static::_checkFormats($ruleCheck));
    }

Usage Example

 /**
  * Options variations:
  *   1. +pattern -mx (default)
  *   2. +pattern +mx
  *   3. -pattern -mx
  *   4. -pattern +mx
  *
  * `$emails[0]` with any `$options` or without options should be `true`
  * `$emails[1]` with any `$options` or without options should be `false`
  * `$emails[2]` with `$options[1]` should be `true`
  * `$emails[2]` with `$options[1]` should be `true`
  *
  * `$options[1]` works same as Lithium's default email validator implementation
  */
 public function testEmail()
 {
     $emails = array('*****@*****.**', 'invalid.djordjekovacevic.com', '[email protected]');
     $options = array(array('mx' => true), array('pattern' => false), array('pattern' => false, 'mx' => true));
     $this->assertTrue(Validator::rule('email', $emails[0]));
     $this->assertTrue(Validator::rule('email', $emails[0], 'any', $options[0]));
     $this->assertTrue(Validator::rule('email', $emails[0], 'any', $options[1]));
     $this->assertTrue(Validator::rule('email', $emails[0], 'any', $options[2]));
     $this->assertFalse(Validator::rule('email', $emails[1]));
     $this->assertFalse(Validator::rule('email', $emails[1], 'any', $options[0]));
     $this->assertFalse(Validator::rule('email', $emails[1], 'any', $options[1]));
     $this->assertFalse(Validator::rule('email', $emails[1], 'any', $options[2]));
     $this->assertFalse(Validator::rule('email', $emails[2], 'any'));
     $this->assertTrue(Validator::rule('email', $emails[2], 'any', $options[1]));
 }
All Usage Examples Of lithium\util\Validator::rule