Flikore Validator
  • Api
  • Namespace
  • Class
  • Tree
  • Deprecated

Namespaces

  • Flikore
    • Validator
      • Exception
      • Interfaces
      • Intl
      • Validators

Classes

  • AfterDateTimeValidator
  • AlphaNumericValidator
  • AlphaValidator
  • BeforeDateTimeValidator
  • DateTimeValidator
  • DateValidator
  • EmailValidator
  • EqualsValidator
  • ExactLengthValidator
  • ExactValueValidator
  • GreaterThanValidator
  • InstanceOfValidator
  • IPv4Validator
  • IPv6Validator
  • LengthBetweenValidator
  • LessThanValidator
  • LetterNumericValidator
  • LetterValidator
  • MaxDateTimeValidator
  • MaxLengthValidator
  • MaxValueValidator
  • MinAgeValidator
  • MinDateTimeValidator
  • MinLengthValidator
  • MinValueValidator
  • NoSpaceValidator
  • NotEmptyValidator
  • NotEqualsValidator
  • NumericValidator
  • OrValidator
  • RecursiveValidator
  • RegexValidator
  • UriValidator
  • ValueBetweenValidator
 1 <?php
 2 
 3 /**
 4  * The MIT License
 5  *
 6  * Copyright 2014 George Marques <george at georgemarques.com.br>.
 7  *
 8  * Permission is hereby granted, free of charge, to any person obtaining a copy
 9  * of this software and associated documentation files (the "Software"), to deal
10  * in the Software without restriction, including without limitation the rights
11  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12  * copies of the Software, and to permit persons to whom the Software is
13  * furnished to do so, subject to the following conditions:
14  *
15  * The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17  *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24  * THE SOFTWARE.
25  */
26 
27 namespace Flikore\Validator\Validators;
28 
29 use Flikore\Validator\Interfaces\IValidator;
30 
31 /**
32  * Validates that each of the elements of an array pass a validator.
33  * 
34  * @customKey <i>%arrKey%</i> The array key that failed the validation (only after validating).
35  *
36  * @author George Marques <george at georgemarques.com.br>
37  * @version 0.5.2
38  * @since 0.4.0
39  * @license http://opensource.org/licenses/MIT MIT
40  * @copyright (c) 2014, George Marques
41  * @package Flikore\Validator
42  */
43 class RecursiveValidator extends \Flikore\Validator\Validator
44 {
45     /**
46      * Stores the validator used to check the values.
47      * @var IValidator Stores the validator used to check the values.
48      */
49     protected $validator;
50 
51     /**
52      * The error message for this validator.
53      * @var string The error message for this validator.
54      */
55     protected $message = 'The %key% failed to validate on key %arrKey%.';
56     
57     /**
58      * Creates a new Recursive Validator.
59      * 
60      * @param IValidator $validator The validator to use when checking.
61      */
62     public function __construct(IValidator $validator)
63     {
64         $this->validator = $validator;
65         $this->addKeyValue('arrKey', null);
66     }
67 
68     /**
69      * Executes the real validation so it can be reused.
70      * @param mixed $value The value to validate.
71      * @return boolean Whether the value pass the validation.
72      */
73     protected function doValidate($value)
74     {
75         if($this->isEmpty($value) || (is_array($value) && empty($value)))
76         {
77             return true;
78         }
79         foreach ($value as $key => $check)
80         {
81             if(!$this->validator->validate($check))
82             {
83                 $this->addKeyValue('arrKey', $key);
84                 return false;
85             }
86         }
87         return true;
88     }
89 
90 }
91 
Flikore Validator API documentation generated by ApiGen 2.8.0