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

Связь: @devmangx
Download Telegram
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
Новая валидация в 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