В-общем, вопрос теоретического характера, из серии "есть куча решений, какое же лучшее".
Приглашаю к диалогу не занятых людей.
Суть. Юзаю
slim framework, там нет вшитой валидации, задумался над тем, чтобы использовать какую-нибудь библиотеку. Внешне понравилась известная библиотека
vlucas/valitron
Дошел до момента кастомных правил, решил бабахнуть для себя правило, которое смотрит, уникальный ли email передали для регистрации.
Реализация кастомных правил здесь такая:
Valitron\Validator::addRule('alwaysFail', function($field, $value, array $params, array $fields) {
return false;
}, 'Everything you do is wrong. You fail.');
Иными словами, вызывается статика, правило на лету добавляется в статичный массив и его можно юзать.
Теперь о главном
Давно задавался вопросом - где и как в структуре микрофреймворков нужно задавать вот такие инициализационные блоки кода?.. Ведь по сути это просто участок, на лету, а не как обычно через наследование, расширяющий базовую библиотеку. Главная запара - ведь вся эта инициализация должна быть вызвана до любых проверок, значит где-то "вверху" в дереве кода.
Какие варианты есть у меня:
1) Бахнуть в файл index.php, но это какой-то треш по ощущениям.
2) Использовать
middleware
3) Может какой-то сервисный файл инициализации? Но тогда как их врубить, если таких библиотек будет с десяток? Очевидно, самый крутой способ на сегодня -
composer, но он ведь делает
autoload файлов по запросу (если код оттуда используют), или я ошибаюсь? Может какая настройка есть, которая позволяет указать composer'у инициализационные файлы?
И еще - правильно я понимаю, что такая структура, как у этого валидатора, не совсем корректная?
Все же вариант с созданием классов для каждого правила как-то привычнее что ли смотрится, или я ошибаюсь?..
Благодарю Вас!