* * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ namespace Flikore\Validator; require_once '../autoload.php'; use Flikore\Validator\Validators as v; // To validate arrays inside arrays, the validation sets can be nested. $v = new ValidationSet(); // You may add a ValidationSet as a rule to some field. // Here, let's create a set to validate the user name and email $inner = new ValidationSet(); // And add the rules $inner->addRule('name', new v\AlphaValidator()); $inner->addRule('email', new v\EmailValidator()); // Then, use this as the rule for the main set. $v->addRule('user', $inner); // Now, take this array: $value = array('user' => array('name' => 'Ok name', 'email' => '*****@*****.**')); // And validate it var_dump($v->validate($value)); //bool(true)
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ namespace Flikore\Validator; require '../autoload.php'; use Flikore\Validator\Validators as v; // Create a set that can validate arrays (and objects too) $set = new ValidationSet(); // Add a single rule to a key $set->addRule('name', new v\NotEmptyValidator()); // This rule is chained with the previous one, both must be valid $set->addRule('name', new v\MinLengthValidator(5)); // Multiple rules can be added at once with an array // Those rules will be *added* to the "name" key, and will not exclude the others. $set->addRules('name', array(new v\MaxLengthValidator(30), new v\RegexValidator('/^[a-z ]+$/i'))); // Just call validate (or assert) to check if it's ok var_dump($set->validate(array('name' => 'Cool Name'))); // bool(true) var_dump($set->validate(array('name' => 'aaa'))); // bool(false) The minimum length is 5 var_dump($set->validate(array('name' => 'aa4a5'))); // bool(false) Doesn't match regex var_dump($set->validate(array('name' => ''))); // bool(false) Can't be empty // Another way is to construct the set with all the rules:
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ namespace Flikore\Validator; require '../autoload.php'; use Flikore\Validator\Validators as v; // This only works with a set, because it's the only way // to have other keys to compare with $set = new ValidationSet(); // Add some rule $set->addRule('key1', new ValidationValue(new v\EqualsValidator('dummy'), new ValidationKey('key2'), true)); // end addRule) // Equal values $ok = array('key1' => 'equal', 'key2' => 'equal'); var_dump($set->validate($ok)); // bool(true) // Not equal values $notOk = array('key1' => 'equal', 'key2' => 'not equal'); var_dump($set->validate($notOk)); // bool(false) // Not strictly equal values $notStrict = array('key1' => 5, 'key2' => '5'); var_dump($set->validate($notStrict)); // bool(false) // Also works on objects $ok = new \stdClass();