PHP Portal | Программирование
4.85K subscribers
408 photos
20 videos
2 files
209 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для PHP-разработчика

Связь: @devmangx
Download Telegram
Вы, конечно, знакомы с middleware, которые идут вместе с Laravel

Но я часто замечаю, что многим начинающим сложно понять разницу между Before (Request) и After (Response) middleware.

По сути, различие между ними зависит от того, когда вызывается колбэк-функция $next.

Если ваше middleware выполняет какие-то действия до вызова $next, это Request (Before) middleware, которое отрабатывает до вызова контроллера.

С другой стороны, если оно выполняет какие-то действия после вызова $next, то это Response (After) middleware, которое выполняется после того, как контроллер уже был выполнен

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
7
This media is not supported in your browser
VIEW IN TELEGRAM
В копилку полезного: принёс ещё одну огромную базу бесплатных API. Внутри аж 1511 штуки на любой вкус: от игр и погоды до финансов и здоровья

Забираем здесь 👍

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥2👀1
Laravel 12.37 добавляет новый метод insert() для фабрик моделей

Теперь можно засевать тысячи записей одним SQL-запросом

- События моделей и наблюдатели не вызываются, работает как сырой insert.

Идеально подходит для тестирования, сидирования и высоконагруженных сценариев 💡

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍43
Для всех, кто говорит: «Зачем разработчики Laravel изобретают колесо заново?» 👀

Потому что наши колёса - со стилем, читаемостью и скоростью 😎

PHP просто работает. Laravel течёт

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
😁11👍75🔥1🌭1
Начиная с Laravel 12.36, можно использовать метод File::allDirectories, чтобы получить массив всех вложенных директорий (включая поддиректории) в указанном пути

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥21👎1
Совет по таблицам filamentphp

Группы по дате

Когда вы используете колонку с типом date-time для группировки, может понадобиться сгруппировать записи только по дате, игнорируя время.

Для этого используйте метод date() у объекта Group.

Документация: https://filamentphp.com/docs/4.x/tables/grouping#date-groups

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🌭1
Новая валидация в Laravel 12.21

Добавлено новое правило in_array_keys, которое проверяет наличие определённых ключей в массиве. Больше не нужно вручную вызывать array_key_exists.

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥61🏆1
Тестирование в Laravel 12.28 стало быстрее

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

Отличный прирост производительности для приложений с большим количеством роутов или тяжёлым конфигом

Работает как в PHPUnit, так и в Pest

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥3
Forwarded from IT Portal
PHP живее всех живых: вышел релиз 8.5

В нём: оператор пайпа (|>), расширение для работы с URI, апгрейды констант и ещё куча годноты.

Подробнее тут

@IT_Portal
🔥22👍84
Только спустя столько лет работы с Laravel я узнал, что пустой вызов dd() выводит на страницу эмодзи баг…

Клёво 😂

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
😁36👍6
Вот тебе совет по Laravel

Race condition’ы не выбрасывают исключений - они тихо портят данные.

Если ты обновляешь несколько моделей (особенно в платёжных сценариях!!!), оберни это в транзакцию, залочь строки и выполняй сайд-эффекты после коммита. Будущий ты скажет спасибо

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍8🔥3
Совет по filamentphp

Не полагайтесь на официальную страницу с плагинами, когда речь идёт об актуальной информации по совместимости версий.

Доверяйте GitHub-репозиторию пакета.

Я видел, что на сайте некоторые пакеты помечены как «не совместимые с v4», но если посмотреть на GitHub - они вполне поддерживают v4.

Пример: https://filamentphp.com/plugins/diogogpinto-auth-ui-enhancer

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
Быстрый cовет по Laravel

Laravel может отправлять тебе email-уведомления, когда важная консольная команда падает. Просто используй хелпер emailOutputOnFailure().

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥113
Кэшировать огромные массивы данных стало проще.

Этот новый пакет делает массу оптимизаций для работы с большим объёмом данных в кэше:

- автоматически определяет крупные payload’ы кэша

- сжимает данные

- разбивает большие массивы или объекты на чанки

- использует умную сериализацию

Знакомьтесь: пакет iazaran/smart-cache.

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍7
Быстрый совет Laravel

Используйте методы вида fake()->xxxxx() для более точных и реалистичных данных.

Вот пример для фейкового адреса недвижимости

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍2
В Laravel есть класс Benchmark, который позволяет замерить время выполнения любой задачи

Это очень удобно, когда нужно быстро проверить время работы конкретной функции или сравнить несколько решений с точки зрения производительности

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥10🤔1
Как структурировать проекты на Laravel?

Это вопрос №1, который мне задают.

И, как по мне, главное вот что:
Какую бы структуру вы ни выбрали, она должна быть последовательной по всему проекту.

Поэтому при ревью чужого кода именно несогласованность в структуре мгновенно бросается мне в глаза.

Пример прилагается

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4😁3🤔1
Laravel/PHP совет

Избегайте создания классов с одинаковыми именами в разных директориях.

Они МОГУТ работать, если везде правильно прописаны неймспейсы, но это слишком рискованно

В примере, который мне прислали на ревью, я бы переименовал классы в VisibilityInterface и/или VisibilityEnum.

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤔32👎2