За последние две недели в Laravel вышло несколько классных фич
- Во-первых, новый метод
Документация: https://laravel.com/docs/12.x/http-client#request-batching
- Далее, добавил поддержку rate-лимитеров на основе ответа.. Это полезно, когда вы хотите учитывать в лимите только определённые ответы, например, ошибки валидации, 404, или другие конкретные HTTP-коды.
Документация: https://laravel.com/docs/12.x/routing#response-base-rate-limiting
- Ещё была добавлена дополнительная поддержка SQS FIFO-очередей для очередных слушателей, почты и уведомлений.
Документация: https://laravel.com/docs/12.x/queues#fifo-listeners-mail-and-notifications
👉 @PHPgx
- Во-первых, новый метод
Http::batch() позволяет выполнять параллельные HTTP-запросы, а также прикреплять колбэки, которые будут вызываться при прогрессе, ошибках, завершении и других событиях.Документация: https://laravel.com/docs/12.x/http-client#request-batching
- Далее, добавил поддержку rate-лимитеров на основе ответа.. Это полезно, когда вы хотите учитывать в лимите только определённые ответы, например, ошибки валидации, 404, или другие конкретные HTTP-коды.
Документация: https://laravel.com/docs/12.x/routing#response-base-rate-limiting
- Ещё была добавлена дополнительная поддержка SQS FIFO-очередей для очередных слушателей, почты и уведомлений.
Документация: https://laravel.com/docs/12.x/queues#fifo-listeners-mail-and-notifications
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤5
Этот пакет выручит вас, если нужно экспортировать большой объём данных
Он экспортирует 10 000 строк за 3 секунды, используя меньше 3 МБ памяти.
Лучшее решение с точки зрения производительности.
Познакомьтесь с
👉 @PHPgx
Он экспортирует 10 000 строк за 3 секунды, используя меньше 3 МБ памяти.
Лучшее решение с точки зрения производительности.
Познакомьтесь с
rap2hpoutre/fast-excelPlease open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1🤔1
PHP 8.5 представляет новое расширение URI, которое является стандартам-соответствующим парсером как для RFC 3986, так и для стандарта WHATWG URL, и теперь доступно в стандартной библиотеке PHP как часть нового расширения "URI".
В RFC приведено множество примеров, но вот один из поста с анонсом от PHP Foundation, демонстрирующий класс Uri согласно RFC 3986
👉 @PHPgx
В RFC приведено множество примеров, но вот один из поста с анонсом от PHP Foundation, демонстрирующий класс Uri согласно RFC 3986
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥9👍3🎉3🤔2
Самый простой способ преобразовать ваши HTTP-запросы в MySQL-запросы
включая:
- фильтрацию
- сортировку
- связи
- выборку отдельных полей
знакомьтесь — пакет
только посмотрите на эту красоту:
👉 @PHPgx
включая:
- фильтрацию
- сортировку
- связи
- выборку отдельных полей
знакомьтесь — пакет
spatie/laravel-query-builderтолько посмотрите на эту красоту:
Please open Telegram to view this post
VIEW IN TELEGRAM
👎11👍6👀2❤1
Совет по Laravel
Сегодня короткий совет о том, что появилось недавно в релизе Laravel 12.34
Теперь вы можете использовать
👉 @PHPgx
Сегодня короткий совет о том, что появилось недавно в релизе Laravel 12.34
Теперь вы можете использовать
Http::batch(...)->defer(), если вам не важен результат HTTP-запросов. В таком случае пакет запросов будет выполнен уже после того, как ответ отправлен пользователю, что позволяет вашему приложению оставаться быстрым и отзывчивымPlease open Telegram to view this post
VIEW IN TELEGRAM
❤7
А ты знал, что можно создавать свои кастомные artisan-команды-генераторы для классов?
Если ты регулярно создаёшь один и тот же тип классов (например, DTO), возможно, стоит обратить на это внимание
👉 @PHPgx
Если ты регулярно создаёшь один и тот же тип классов (например, DTO), возможно, стоит обратить на это внимание
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5
В продакшене всегда нужно принудительно использовать HTTPS. Вот как это сделать в Laravel:
- Убедитесь, что все генерируемые ссылки используют https (настраивается через фасад URL)
- Настройте редирект пользователей с http на https (с помощью middleware)
👉 @PHPgx
- Убедитесь, что все генерируемые ссылки используют https (настраивается через фасад URL)
- Настройте редирект пользователей с http на https (с помощью middleware)
Please open Telegram to view this post
VIEW IN TELEGRAM
👎6❤4👍3
Если вы хотите организовать свой Laravel-проект по модульной структуре, есть два хорошо известных пакета:
-
-
В чём ключевые различия?
Я бы выделил два момента:
🔹 Пакет nwidart при использовании команды
🔹 Пакет internachi регистрирует модули практически как Laravel-пакеты, благодаря чему их можно переиспользовать в других проектах. В то время как nwidart рассматривает модули как внутренние мини-приложения Laravel.
Так что оба решения хорошие, выбор зависит от конкретного сценария использования
👉 @PHPgx
-
nwidart/laravel-modules-
internachi/modularВ чём ключевые различия?
Я бы выделил два момента:
module:make генерирует больше файлов, включая нестандартные и довольно «мнение-ориентированные» файлы, создаваемые командами вроде module:make-model и подобными. Поэтому, если вам не нравится предлагаемая структура, придётся потратить время на правки или удаление лишнего. Пакет internachi генерирует минимально необходимый набор файлов.Так что оба решения хорошие, выбор зависит от конкретного сценария использования
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4
Во время написания тестов для вашего приложения вы можете столкнуться с ситуацией, когда нужно проверить поведение кода в определённый момент в будущем или в прошлом.
Не переживайте, Laravel предоставляет удобные методы, такие как
👉 @PHPgx
Не переживайте, Laravel предоставляет удобные методы, такие как
travel(), travelTo() и travelBack(), которые позволяют «перемещаться во времени» внутри теста и проверять поведение вашего кода соответствующим образомPlease open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
defer() отлично подходит для показа уведомлений.Примерно как в X-уведомлениях: когда пользователь кликает посмотреть уведомления, вы фетчите их и отдаёте как непрочитанные, а сразу после того, как ответ долетает до пользователя, помечаете их как прочитанные. Чисто
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
Мониторинг ещё никогда не был таким простым
Тебе даже не нужно поднимать сложные стеки и компоненты - просто установи пакет
- загрузку CPU
- использование дискового пространства
- подключения к базе данных
- Redis
- и многое другое
👉 @PHPgx
Тебе даже не нужно поднимать сложные стеки и компоненты - просто установи пакет
spatie/laravel-health, и ты получишь:- загрузку CPU
- использование дискового пространства
- подключения к базе данных
- Redis
- и многое другое
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5
В Laravel есть несколько классных хелперов для работы с Request
Вот некоторые из самых интересных и наименее известных из них
👉 @PHPgx
Вот некоторые из самых интересных и наименее известных из них
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5
Новые строковые методы в Laravel 12.21
Добавлены новые хелперы для строк:
Сразу напрашиваются два варианта использования:
Упрощение отрицательных условий в
Проверка расширений файлов
👉 @PHPgx
Добавлены новые хелперы для строк:
doesntStartWith() и doesntEndWith().Сразу напрашиваются два варианта использования:
Упрощение отрицательных условий в
ifПроверка расширений файлов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2😁1
Вы, конечно, знакомы с middleware, которые идут вместе с Laravel
Но я часто замечаю, что многим начинающим сложно понять разницу между Before (Request) и After (Response) middleware.
По сути, различие между ними зависит от того, когда вызывается колбэк-функция
Если ваше middleware выполняет какие-то действия до вызова
С другой стороны, если оно выполняет какие-то действия после вызова
👉 @PHPgx
Но я часто замечаю, что многим начинающим сложно понять разницу между Before (Request) и After (Response) middleware.
По сути, различие между ними зависит от того, когда вызывается колбэк-функция
$next.Если ваше middleware выполняет какие-то действия до вызова
$next, это Request (Before) middleware, которое отрабатывает до вызова контроллера.С другой стороны, если оно выполняет какие-то действия после вызова
$next, то это Response (After) middleware, которое выполняется после того, как контроллер уже был выполненPlease open Telegram to view this post
VIEW IN TELEGRAM
❤7
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥2👀1
Laravel 12.37 добавляет новый метод insert() для фабрик моделей
Теперь можно засевать тысячи записей одним SQL-запросом
- События моделей и наблюдатели не вызываются, работает как сырой insert.
Идеально подходит для тестирования, сидирования и высоконагруженных сценариев💡
👉 @PHPgx
Теперь можно засевать тысячи записей одним SQL-запросом
- События моделей и наблюдатели не вызываются, работает как сырой insert.
Идеально подходит для тестирования, сидирования и высоконагруженных сценариев
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍4❤3
Для всех, кто говорит: «Зачем разработчики Laravel изобретают колесо заново?» 👀
Потому что наши колёса - со стилем, читаемостью и скоростью😎
PHP просто работает. Laravel течёт
👉 @PHPgx
Потому что наши колёса - со стилем, читаемостью и скоростью
PHP просто работает. Laravel течёт
Please open Telegram to view this post
VIEW IN TELEGRAM
😁11👍7❤5🔥1🌭1
Начиная с Laravel 12.36, можно использовать метод
👉 @PHPgx
File::allDirectories, чтобы получить массив всех вложенных директорий (включая поддиректории) в указанном путиPlease open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2❤1👎1
Совет по таблицам filamentphp
Группы по дате
Когда вы используете колонку с типом date-time для группировки, может понадобиться сгруппировать записи только по дате, игнорируя время.
Для этого используйте метод
Документация: https://filamentphp.com/docs/4.x/tables/grouping#date-groups
👉 @PHPgx
Группы по дате
Когда вы используете колонку с типом date-time для группировки, может понадобиться сгруппировать записи только по дате, игнорируя время.
Для этого используйте метод
date() у объекта Group.Документация: https://filamentphp.com/docs/4.x/tables/grouping#date-groups
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🌭1