Peter Gribanov

Results 126 comments of Peter Gribanov

> final - это конечно классная штука, но тестирование она усложняет, например phpunit пошлет нафиг, если попытаться замокать подобное. А зачем мокать реализацию? Мокайте интерфейс, а реализацию запихните в сервис...

> работа с реквестом должна быть вынесена в аргумент-резолверы Я бы не говорил "должна". Я бы сказал - работа с реквестом **может** быть вынесена в аргумент-резолверы или парам-конверьеры. Мапить реквест...

К слову о `final`. Когда-то уже писали об этом в [Clean Code](https://github.com/peter-gribanov/clean-code-php#%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D0%BE%D1%87%D1%82%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B5%D0%B9-final-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B). Не так расширено как на Хабре, но и со ссылкой на [Marco Pivetta](https://ocramius.github.io/blog/when-to-declare-classes-final/).

> Чушь полная и экономия на спичках. То есть по вашему [Lazy Services](https://symfony.com/doc/current/service_container/lazy_services.html), lazy load у [event subscribers](https://symfony.com/doc/current/event_dispatcher.html#creating-an-event-subscriber) и инициализация сервисов при обращении к ним это чушь? Вы считаете нормальным...

Для Code Style я предпочитаю [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer), а для Open Source проектов еще и [Style CI](https://styleci.io/). Для шторма использую плагин статический анализатор [Php Inspections ​(EA Extended)](https://plugins.jetbrains.com/plugin/7622-php-inspections-ea-extended-). В проектах я...

Не все `nullable`. И на `null` правильно проверять так: ```php if ($token === null) { // ... } ``` Ваш вариант выглядит ещё ужасней и приведет к куче дублируемого кода

> почему? Потому, что вызов функции обходится дороже чем операция сравнения и статические анализаторы ругаются на такой код. Рекомендую не пренебрегать простейшими оптимизациями, особенно если вы хотите учить других хорошему....

> На счет ошибок - не согласен, аргументируйте. Больше количество однотипного кода замыливает глаз. Можно легко пропустить где-то return или в процессе рефакторинга случайно его удалить и т.д. Много точек...

> В вашем же примере вы не проверяете интерфейсы $request, $session, $token. Да, не проверяю потому, что интерфейс мне говорит, что возвращаемое значение `Request|null`, `TokenInterface|null` и `SessionInterface|null` соответственно. Для User...

Судя по всему, в последних версиях PHP что-то хорошо оптимизировали. Раньше вызов функции был всегда медленнее: * https://www.php.net/manual/ru/function.is-null.php#84161 * https://stackoverflow.com/a/8229059 И в вашем примере https://3v4l.org/WQk7Q для PHP версии 7.2.25 и...