Как добавить пользовательский валидатор в библиотеку Respect’s Validation

Удивительным Respect Validation library поставляется со множеством встроенных валидаторов, таких как string (), alpha () и так далее. Я хочу добавить самоопределенные валидаторы в библиотеку, например, я хочу быть в состоянии сделать это:

Validator::myCustomValidator()->assert( $input );

Я только что обнаружил, что это не очень сложно, но мне пришлось посмотреть на исходный код библиотеки, чтобы выяснить это, поэтому я публикую этот вопрос с самоотдачей здесь для дальнейшего использования.

2

Решение

Определите класс валидации и сопутствующий класс исключений в правильном пространстве имен, и библиотека валидации будет автоматически использовать их для проверки ваших данных, как таковая:

myCustomValidator.php:

<?php

namespace Respect\Validation\Rules;

class myCustomValidator extends AbstractRule
{
public function validate($input)
{
return true; // Implement actual check here; eg: return is_string($input);
}
}

myCustomValidatorException.php:

<?php

namespace Respect\Validation\Exceptions;

class myCustomValidatorException extends ValidationException
{
public static $defaultTemplates = array(
self::MODE_DEFAULT => array(
self::STANDARD => '{{name}} must ... ', // eg: must be string
),
self::MODE_NEGATIVE => array(
self::STANDARD => '{{name}} must not ... ', // eg: must not be string
)
);
}

Пока эти файлы включены в ваш проект, Validator::myCustomValidator()->assert( $input ); теперь должен работать.

Это, очевидно, основывается на соглашениях об именах, поэтому обязательно используйте имя класса для вызова самоопределяемого валидатора, и вы должны быть установлены.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]