Единственный правильный способ прокинуть логгер ☝️



Что не так с LoggerAware* костылями:



LoggerAwareInterface делает дыру в сервисе методом setLogger. Да и как контракт он абсолютно бесполезен.



• В LoggerAwareTrait свойство logger, что бы ни говорил phpdoc, имеет значение по умолчанию null и, соответственно, nullable тип. Значит его либо нужно всегда проверять if ($this->logger !== null), либо как в сниппете инициализировать в конструкторе пустым логгером, только уже не в качестве фоллбэка, а превентивно. В любом случае код получится более сложным и менее очевидным.



PSR-3 я также комментировал в среду на стриме про трейты: https://youtu.be/xoEPNiMtVps?t=4069.