ElisDN писал(а): ↑2019.05.29, 15:45
Эм... Простите... Я наоборот выступаю за упрощение. Что вместо ваших
семи классов-экшенов с тремя методами в каждом можно сделать мой всего
один класс-контроллер с семью методами-экшенами, небольшой автоматизацией очистив от мусора.
Меньше классов не означает, что это хорошо. "Жирный" экшен и "тонкий" контроллер будет всё таки лучше, чем "Жирный" контроллер, уж по крайней мере в плане гибкости и самостоятельности.
ElisDN писал(а): ↑2019.05.29, 15:45
Не нравится низкоуровневый LoggerInterface::warning - оберните в высокоуровневый DomainErrorHandler::handle. Не нравится завязываться на зависимость в контроллере - оборачивайте хэндлеры логированием исключений в декораторах или в шине. А если вообще не логируете доменные ошибки параллельно с красивым выводом их в UI, то это ваше дело.
Я же говорю, логгер - это прикладная штука и высокоуровневой она быть не может. Он только и делает, что принятую строку пишет куда-то. Если он этого не делает, но его объект существует, то тут мы просто тратим ресурсы в пустую. + можно написать свой обработчик исключений и варнингов, для продакшна вполне хватит. И приложение об этом логгере не знает, как и должно. И при чём тут UI что-то не понял. Зачем логи в UI выводить?
ElisDN писал(а): ↑2019.05.29, 15:45
Закомментирую лишние или все таргеты для Monolog в контейнере. Не поможет - потрачу минуту времени и запилю-таки DummyLogger.
Ну вот, говорим про то, что бы всё автоматически было, а в итоге руками выпиливаем хардкод зависимости, за что и ругали Yii)
ElisDN писал(а): ↑2019.05.29, 15:45
У меня весь проект логирование использует, а не только контроллеры. Или у вас отключение логов жёстким выпилом через composer remove делается, чтобы все десятки вызовов LoggerInterface пообвалились?
Повторюсь ещё раз о том, что можно собственный обработчик исключений сделать, это дело нескольких минут. И да, через композер такой обработчик подключу в проект и при необходимости смогу полностью выпилить. Создатели PHP дали нам возможность работы с исключениями (и далеко неплохую кстати), а у нас пользуются ей для реализации валидаторов в каноничном DDD. Смех да и только. Только и читаешь, как в PHP придумали как мылом гвозди забивать. Не хочу никого обидеть, но стали уже просто с ума сходит с принципами каноничной архитектуры. А в итоге видал, как один клоун делал классы для того, что бы текстовые константы имели тип. Он об SPL даже не знает, зато о DDD пишет (если найду ссыль на эту статью, обязательно скину).
ElisDN писал(а): ↑2019.05.29, 15:45
Ну так конторллер и должен дёргать сервисы из прикладного уровня. Перешёл человек из письма по старой ссылке восстановления пароля с токеном, а я сразу в начале экшена через прикладной TokenChecker проверку токена дёрну и ему напишу "Токен истёк". Если всё нормально - выведу форму вбивания нового пароля.
В случае Yii, данный прикладной сервис относится к действию, нежели к контроллеру. Зачем тащить в контроллер зависимость, которая нужна для 1 действия из всех? Для этого, в реалиях Yii2 подходят прекрасно StandAlone экшены. Свой конструктор, никакого лишего кода логики из других действий, свои методы, которые доступны только для данного действия.
Тут конечно стоит добавить, что я очень надеюсь, что в Yii когда-нибудь выпилят экшены и контроллер будет обрабатывать реально одну команду, а не будет служить своего рода списком действий.