сап тред, просматривал видеоуроки по шаблонам проектирования и столкнулся с непониманием тех строк которые подчеркнул. Зачем они нужны, объясните кто нибудь.
>>2358305Я тоже не очень понимаю, в чем смысл этого кода. Есть такой подход, когда функции-сеттеры (которые задают какой-то параметр) заканчиваются строкой return $this; и это позволяет вызывать их по цепочке: $someObject->setA(1)->setB(2)->setC(3);Но зачем возвращать $this->messenger, я не очень понимаю. Может, это какая-то ошибка? Вообще, мне не нравится этот паттерн. Я считаю, вместо того, чтобы писать однотипный код, сам язык должен поддерживать какой-то синтаксис для вызова методов по цепочке. Также, мне не нравится здесь дублирование кода. У функции указан тип возврата MessengerInterface и зачем-то в комментариях это указано второй раз: @return MessengerInterfaceТак не нужно делать. Если ты уже указал тип возвращаемого значения, не не надо его писать второй раз.
>>2360226>У функции указан тип возврата MessengerInterface и зачем-то в комментариях это указано второй раз:>@return MessengerInterface1) PHPStorm считает по-другому2) Документация инструментами генерится из PHPDoc а не тайпхинтовмимо
>>2360246PHPStorm это не стандарт, это всего лишь IDE. Я знаю, что PHPStorm любит генерировать бесполезные комментарии, но это не значит, что это правильно. Я думаю, это отключается где-то в настройках.При этом, PHPStorm умеет парсить тайп-хинты и использовать их для анализа и подсказок. Также и другие анализаторы вроде phpstan умеют читать тайп-хинты.Что касается PHPDoc, то я не вижу упоминания в документации, что он не умеет парсить тайп-хинты.
>>2360759Вообще да. PHPDocumentor изclass App{ public function test(): array { return []; }}сгенерилpublic test() : array<string|int, mixed>
>>2360780Но все же я не могу в тайпхинте указать дженерик, так что я могу его указать в phpdoc, а тайпхинт array оставить для проверок в рантайме.
>>2360785Я не написал, что я против PhpDoc. Я против таких PhpDoc, которые просто дублируют тайп-хинты и не несут никакой новой информации. Они бесполезны и лишь увеличивают время на чтение и модификацию кода.>>2360900В твиге есть макросы для этого, наверно и в блейде что-то есть.Гугление показывает, что есть директива include: https://laravel.com/docs/9.x/blade#including-subviewsТакже, там есть компоненты: https://laravel.com/docs/9.x/blade#components