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

Связь: @devmangx
Download Telegram
В продакшене всегда нужно принудительно использовать 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
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