Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.34K photos
20 videos
26 files
4.03K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
加入频道
#laravelshit

Ребята из spatie делают не только пакеты среднего уровня качества, но и рекомендуют и пишут статьи не лучше своих пакетов. Например, статья под гордым названием «5 простых советов» на самом деле рекламирует как минимум три ужасных:

1. Предлагается использовать User::all()->dd() вместо dd(User::all()), ссылаясь на то, что разработчиков может раздражать необходимость заводить переменную для вызова dd. Зато разработчиков не раздражает дебажить код с помощью dd вместо xdebug и тянуть на продакшн код для дебага https://github.com/laravel/framework/blob/8.x/src/Illuminate/Database/Query/Builder.php#L3406-L3409 (🤦‍♂️).

2. Используйте Auth::id() вместо Auth::user()->id(), – гордо кричит автор статьи, предлагая заменить один кусок говна плохого кода другим. Чтобы уяснить для себя, почему это плохо, советую прочитать данный тред со ссылкой на оригинальный твит, приведенный в статье, https://twitter.com/pierrejoye/status/1286441723724324864?s=21.

3. "Используйте ->withDefault() при определении отношений, чтобы в случае отсутствия модели получать пустышку". Как и автор статьи, документация заявляет, что это пример реализации паттерна Null Object, но это не так. Null Object нужен, чтобы соответствовать типу и ничего не делать (например, NullLogger), а null от объекта модели только вводит в ступор: придется проверять на существование id модели, чтобы отличить его от реальных данных, что не сильно отличается от if ($post->user === null).

https://ryangjchandler.co.uk/posts/5-simple-laravel-tips-and-tricks
#laravelshit

В тему разговора о том, почему фасады плохие, можно вспомнить ишьюс на гитхабе, в котором разработчики жалуются на то, что фасады превращают любой сервис в синглтон, потому что кэшируют их в текущем рантайме. Можно, конечно, обойти этот баг следующим образом, но все это говорит не в пользу фасадов. Главное не вздумайте использовать фасады в долгоживущих приложениях.

https://github.com/laravel/ideas/issues/1088