@muhasa

Где лучше всего разместить инициализационные файлы сторонних библиотек в slim framework или иных микрофреймворках?

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

Суть. Юзаю 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'у инициализационные файлы?

И еще - правильно я понимаю, что такая структура, как у этого валидатора, не совсем корректная?
Все же вариант с созданием классов для каждого правила как-то привычнее что ли смотрится, или я ошибаюсь?..

Благодарю Вас!
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
Хз как там в слиме, а в laravel есть в сервис провайдерах метод boot, вызываемый после регистрации всех зависимостей фреймворка и до какой-либо след. идущих действий (как-то обработка консольной команды или http реквеста). Там обычно и регистрируется все подряд - это ок.

Ищите в slim подобный lifecycle "хук".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы