«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2022/05/17 22:04:50  №2358305 1
image.png (131, 758x727)
727x758
сап тред, просматривал видеоуроки по шаблонам проектирования и столкнулся с непониманием тех строк которые подчеркнул. Зачем они нужны, объясните кто нибудь.
Ответы: >>2358311 >>2360226
Аноним 2022/05/20 17:15:39  №2360226 2
>>2358305

Я тоже не очень понимаю, в чем смысл этого кода. Есть такой подход, когда функции-сеттеры (которые задают какой-то параметр) заканчиваются строкой return $this; и это позволяет вызывать их по цепочке:

$someObject->setA(1)->setB(2)->setC(3);

Но зачем возвращать $this->messenger, я не очень понимаю. Может, это какая-то ошибка?

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

Также, мне не нравится здесь дублирование кода. У функции указан тип возврата MessengerInterface и зачем-то в комментариях это указано второй раз:

@return MessengerInterface

Так не нужно делать. Если ты уже указал тип возвращаемого значения, не не надо его писать второй раз.
Ответы: >>2360246
Аноним 2022/05/20 17:51:26  №2360246 3
>>2360226
>У функции указан тип возврата MessengerInterface и зачем-то в комментариях это указано второй раз:
>@return MessengerInterface

1) PHPStorm считает по-другому
2) Документация инструментами генерится из PHPDoc а не тайпхинтов

мимо
Ответы: >>2360759
Аноним 2022/05/21 15:58:30  №2360759 4
>>2360246

PHPStorm это не стандарт, это всего лишь IDE. Я знаю, что PHPStorm любит генерировать бесполезные комментарии, но это не значит, что это правильно. Я думаю, это отключается где-то в настройках.

При этом, PHPStorm умеет парсить тайп-хинты и использовать их для анализа и подсказок. Также и другие анализаторы вроде phpstan умеют читать тайп-хинты.

Что касается PHPDoc, то я не вижу упоминания в документации, что он не умеет парсить тайп-хинты.
Ответы: >>2360780
Аноним 2022/05/21 16:39:22  №2360780 5
>>2360759
Вообще да. PHPDocumentor из
class App
{
public function test(): array
{
return [];
}
}

сгенерил

public test() : array<string|int, mixed>
Ответы: >>2360785
Аноним 2022/05/21 16:43:42  №2360785 6
>>2360780
Но все же я не могу в тайпхинте указать дженерик, так что я могу его указать в phpdoc, а тайпхинт array оставить для проверок в рантайме.
Ответы: >>2360970
Аноним 2022/05/21 20:04:14  №2360900 7
Тут есть, кто хоть немного в блейде понимает?

Хочу понять, какая структура должна быть у шаблонов.

Вот есть базовый шаблон с повторяющимся хедером, футером, посередине вставляется @yield content, назовем его app.blade.php. Дальше я создаю дочернюю страничку, пусть будет about, которая наследуется от базового шаблона app, описываю секцию, хуе-мое, блять. И таких страничек будет штук 5. Потом я осознаю, что в эти 5 страничек нужно вставить абсолютно одинаковый кусочек кода, не слишком маленький, но и не на 100 строк. Как бы мне это сделать красиво и без копипаста?
Ответы: >>2360970 >>2361792
Аноним 2022/05/21 23:17:59  №2360970 8
>>2360785

Я не написал, что я против PhpDoc. Я против таких PhpDoc, которые просто дублируют тайп-хинты и не несут никакой новой информации. Они бесполезны и лишь увеличивают время на чтение и модификацию кода.

>>2360900

В твиге есть макросы для этого, наверно и в блейде что-то есть.Гугление показывает, что есть директива include: https://laravel.com/docs/9.x/blade#including-subviews

Также, там есть компоненты: https://laravel.com/docs/9.x/blade#components