TGViewer
Channel Public Channel
PHP Portal | Программирование

PHP Portal | Программирование

@phpgx

Присоединяйтесь к нашему каналу и погрузитесь в мир для PHP-разработчика

Связь: @devmangx
Subscribers
4.65K
Photos
426
Videos
20
Links
212

Showing posts older than #566 · Back to latest

Older Posts 15 shown
Post #565 1.77K
Во время написания тестов для вашего приложения вы можете столкнуться с ситуацией, когда нужно проверить поведение кода в определённый момент в будущем или в прошлом.

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

👉 @PHPgx
  • 👍 4
  • ❤ 1
Post #562 1.72K
Если вы хотите организовать свой Laravel-проект по модульной структуре, есть два хорошо известных пакета:

- nwidart/laravel-modules
- internachi/modular

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

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

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

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

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

👉 @PHPgx
  • ❤ 9
  • 👍 4
Post #561 2.13K
В продакшене всегда нужно принудительно использовать HTTPS. Вот как это сделать в Laravel:

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

👉 @PHPgx
  • 👎 6
  • ❤ 4
  • 👍 3
Post #559 2.4K
А ты знал, что можно создавать свои кастомные artisan-команды-генераторы для классов?

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

👉 @PHPgx
  • 👍 9
  • ❤ 5
Post #557 2.41K
Совет по Laravel

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

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

👉 @PHPgx
  • ❤ 7
Post #556 2.17K
Самый простой способ преобразовать ваши HTTP-запросы в MySQL-запросы

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

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

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

👉 @PHPgx
  • 👎 11
  • 👍 6
  • 👀 2
  • ❤ 1
Post #555 2.85K
PHP 8.5 представляет новое расширение URI, которое является стандартам-соответствующим парсером как для RFC 3986, так и для стандарта WHATWG URL, и теперь доступно в стандартной библиотеке PHP как часть нового расширения "URI".

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

👉 @PHPgx
  • ❤ 14
  • 🔥 9
  • 👍 3
  • 🎉 3
  • 🤔 2
Post #554 2.4K
Этот пакет выручит вас, если нужно экспортировать большой объём данных

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

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

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

👉 @PHPgx
  • 👍 13
  • ❤ 1
  • 🤔 1
Post #551 3.04K
За последние две недели в 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
  • 👍 11
  • ❤ 5
Post #549 2.23K
Совет по filamentphp

Пустая таблица? Нет данных? В пустом состоянии по центру просто будет показано «No posts».

Но вы можете добавить ACTIONS к пустому состоянию, чтобы побудить пользователей к действию.
Передайте их методу emptyStateActions().

Документация: https://filamentphp.com/docs/4.x/tables/empty-state#adding-empty-state-actions

👉 @PHPgx
  • ❤ 3
  • 👍 3
  • 🔥 3
Post #548 1.98K
Совет по Laravel

Можно избежать проблем при выполнении операций с базой данных, используя метод DB::afterCommit()

В примере мы избегаем ситуации с «осиротевшим» файлом, если создание инвойса в БД завершается ошибкой

👉 @PHPgx
  • ❤ 5
  • 👍 5
  • 🔥 3
  • 👎 1
Post #546 2.12K
Болезненный урок, который я продолжаю усваивать, выполняя задачи по миграции данных в проде: нужно заранее убедиться, что изменённые записи можно легко отследить в том или ином виде

Если облажаться со скриптом миграции (а у меня такое бывало), то хотя бы можно сделать выборку из базы по всем записям с одинаковым значением поля updated_at, чтобы начать процесс восстановления или отката данных к исходному состоянию и попробовать снова.

Вероятность того, что у записей будет точно одинаковый updated_at, довольно мала, поэтому это простой и универсальный способ, который работает со всеми моделями.

Конечно, можно использовать механизмы защиты, такие как транзакции в БД, но это не панацея, если не выбрасывается исключение, транзакция не откатывается. Кроме того, таблица может быть слишком большой или слишком активно использоваться, чтобы пытаться заблокировать её целиком.

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

👉 @PHPgx
  • ❤ 6
  • 🌭 2
  • 👎 1
Post #545 1.96K
PHP-разработчики, когда слышат «PHP мёртв»… 😁

👉 @PHPgx
  • 😁 27
  • ❤ 8
  • 👍 4
Post #543 2.05K
Иногда столбец в БД не нужен

Для одноразовых значений вроде токенов подтверждения email или OTP → просто закешируй их.

🔹Автоистечение
🔹Чище схема
🔹Без лишних столбцов

👉 @PHPgx
  • ❤ 7
  • 👍 4
  • 🔥 1
Post #541 2.07K
Совет по filamentphp

Группируйте по датам, а не по полным таймстампам. Применяйте date() к группе для более чистых ежедневных сводок

Ссылка на доку: https://filamentphp.com/docs/4.x/tables/grouping#date-groups

👉 @PHPgx
  • 👍 3
  • ❤ 2
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →