Я рекомендую пользоваться "формами", как например здесь
https://github.com/kryoz/sociochat/blob/master/src... , хотя реализация достаточно примитивная
try {
$form = (new Form())
->import($request)
->addRule(PropertiesDAO::NAME, Rules::namePattern(), $lang->getPhrase('InvalidNameFormat'))
->addRule(PropertiesDAO::TIM, Rules::timPattern(), $lang->getPhrase('InvalidTIMFormat'))
->addRule(PropertiesDAO::SEX, Rules::sexPattern(), $lang->getPhrase('InvalidSexFormat'));
} catch (WrongRuleNameException $e) {
$this->errorResponse($user, ['property' => $lang->getPhrase('InvalidProperty')]);
return;
}
Такая форма валидации гораздо легче читается и управляется.
Сами правила ничто иное, как анонимные функции, но можно и типовые случае в фабрику запихнуть
https://github.com/kryoz/sociochat/blob/master/src...