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

Связь: @devmangx
Download Telegram
За последние две недели в Laravel вышло несколько классных фич

- Во-первых, новый метод 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

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍115
Этот пакет выручит вас, если нужно экспортировать большой объём данных

Он экспортирует 10 000 строк за 3 секунды, используя меньше 3 МБ памяти.

Лучшее решение с точки зрения производительности.

Познакомьтесь с rap2hpoutre/fast-excel

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131🤔1
PHP 8.5 представляет новое расширение URI, которое является стандартам-соответствующим парсером как для RFC 3986, так и для стандарта WHATWG URL, и теперь доступно в стандартной библиотеке PHP как часть нового расширения "URI".

В RFC приведено множество примеров, но вот один из поста с анонсом от PHP Foundation, демонстрирующий класс Uri согласно RFC 3986

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥9👍3🎉3🤔2
Самый простой способ преобразовать ваши HTTP-запросы в MySQL-запросы

включая:
- фильтрацию
- сортировку
- связи
- выборку отдельных полей

знакомьтесь — пакет spatie/laravel-query-builder

только посмотрите на эту красоту:

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👎11👍6👀21
Совет по Laravel

Сегодня короткий совет о том, что появилось недавно в релизе Laravel 12.34

Теперь вы можете использовать Http::batch(...)->defer(), если вам не важен результат HTTP-запросов. В таком случае пакет запросов будет выполнен уже после того, как ответ отправлен пользователю, что позволяет вашему приложению оставаться быстрым и отзывчивым

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
7
А ты знал, что можно создавать свои кастомные artisan-команды-генераторы для классов?

Если ты регулярно создаёшь один и тот же тип классов (например, DTO), возможно, стоит обратить на это внимание

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95
В продакшене всегда нужно принудительно использовать HTTPS. Вот как это сделать в Laravel:

- Убедитесь, что все генерируемые ссылки используют https (настраивается через фасад URL)
- Настройте редирект пользователей с http на https (с помощью middleware)

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👎64👍3
Если вы хотите организовать свой Laravel-проект по модульной структуре, есть два хорошо известных пакета:

- nwidart/laravel-modules
- internachi/modular

В чём ключевые различия?

Я бы выделил два момента:

🔹Пакет nwidart при использовании команды module:make генерирует больше файлов, включая нестандартные и довольно «мнение-ориентированные» файлы, создаваемые командами вроде module:make-model и подобными. Поэтому, если вам не нравится предлагаемая структура, придётся потратить время на правки или удаление лишнего. Пакет internachi генерирует минимально необходимый набор файлов.

🔹Пакет internachi регистрирует модули практически как Laravel-пакеты, благодаря чему их можно переиспользовать в других проектах. В то время как nwidart рассматривает модули как внутренние мини-приложения Laravel.

Так что оба решения хорошие, выбор зависит от конкретного сценария использования

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍4
Во время написания тестов для вашего приложения вы можете столкнуться с ситуацией, когда нужно проверить поведение кода в определённый момент в будущем или в прошлом.

Не переживайте, Laravel предоставляет удобные методы, такие как travel(), travelTo() и travelBack(), которые позволяют «перемещаться во времени» внутри теста и проверять поведение вашего кода соответствующим образом

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
defer() отлично подходит для показа уведомлений.

Примерно как в X-уведомлениях: когда пользователь кликает посмотреть уведомления, вы фетчите их и отдаёте как непрочитанные, а сразу после того, как ответ долетает до пользователя, помечаете их как прочитанные. Чисто 💅

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Мониторинг ещё никогда не был таким простым

Тебе даже не нужно поднимать сложные стеки и компоненты - просто установи пакет spatie/laravel-health, и ты получишь:

- загрузку CPU
- использование дискового пространства
- подключения к базе данных
- Redis
- и многое другое

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75
В Laravel есть несколько классных хелперов для работы с Request

Вот некоторые из самых интересных и наименее известных из них

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5
Новые строковые методы в Laravel 12.21

Добавлены новые хелперы для строк: doesntStartWith() и doesntEndWith().

Сразу напрашиваются два варианта использования:

Упрощение отрицательных условий в if

Проверка расширений файлов

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72😁1
Вы, конечно, знакомы с 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