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

Связь: @devmangx
Download Telegram
Как использовать сервисные классы в контроллере Laravel?

А точнее — где их определять или внедрять?

Моё правило:

🔹Если сервис используется в одном методе контроллера — внедрение в метод

🔹Если в нескольких методах — внедрение через конструктор с использованием property promotion

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍86
PHP-разработчики, пишущие на JavaScript, после того как у них челюсть отвисает от того, что аналогичный функционал не идет из коробки в JS. 🤣

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10👍42
Храни уведомления в базе данных, чтобы построить систему in-app уведомлений.

Добавь 'database' в метод via(), и Laravel автоматически сохранит данные уведомления в формате JSON.

Документация: https://laravel.com/docs/12.x/notifications#database-notifications

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍3
Вот как нужно писать на PHP

Инструменты для современного PHP сейчас реально на хорошем уровне. А значит, писать на PHP можно куда лучше, чем ты, возможно, думаешь.

Вдохновившись докладом Нуно Мадуро про современные PHP-инструменты, автор занялся обновлением своего стартового набора Fission, чтобы убедиться, что использует всё самое актуальное из того, что предлагает PHP для разработки.

И это полностью изменило его подход к написанию кода на PHP. Он нашёл идеальный стек инструментов.

https://www.youtube.com/watch?v=qkG2ybcmpZc

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75
Теперь вы можете запускать Laravel-приложения напрямую внутри Node.js.

Платформа Platformatic анонсировала решение, которое объединяет PHP и JavaScript в едином рантайме. Это открывает новые горизонты для full-stack разработки и избавляет от необходимости поддерживать раздельные инфраструктуры для PHP и Node.js.

Новое решение под названием Platformatic PHP stackable позволяет запускать Laravel-приложения внутри Node.js-рантайма Watt. Ключевым компонентом является @platformatic/php-node — нативный модуль на Rust, который внедряет многопоточный PHP-интерпретатор прямо в Node.js

Это создает высокопроизводительный мост, позволяя вашему Laravel-приложению запускаться как stackable-модуль внутри Watt. Это снижает задержки и даёт массу преимуществ:

Единый деплой: PHP и Node.js-сервисы работают в одном рантайме.
Общие ресурсы: Оптимизация использования ресурсов и снижение затрат на инфраструктуру.
Плавная миграция: Постепенный перенос легаси-приложений на JavaScript.
Polyglot-архитектура: Используйте PHP и JS вместе в микросервисной архитектуре.

Начать просто — всего пара шагов по конфигурации, и ваше существующее Laravel-приложение будет работать в окружении Node.js.

В блоге Platformatic уже опубликовано подробное руководство по запуску

Репозиторий на GitHub:
https://github.com/platformatic/watt-next-laravel

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
5🤔3👎2
Нужно выполнить поиск по нескольким столбцам с одним и тем же условием?

Используй методы whereAny(), whereAll() или whereNone() вместо написания множества условий с OR или AND. Код станет гораздо чище и понятнее!

Документация: https://laravel.com/docs/12.x/queries#where-any-all-none-clauses

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍216
Как заставить ИИ писать код по стилю

Нашёл оптимизированные для ИИ гайдлайны, специально отформатированные для Claude Code и аналогичных инструментов. Это позволяет генерировать код в соответствии со стандартами Laravel и PHP от Spatie.

Файл с гайдлайнами, адаптированными под ИИ, можно посмотреть здесь: https://spatie.be/guidelines/ai

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
Новое в Laravel 12.21 на этой неделе:

Теперь при запуске php artisan db:seed будет отображаться время выполнения.

Ранее Laravel показывал это только при запуске с указанием конкретного сидера через --class=SomeSeeder.

Ссылка на PR:
https://github.com/laravel/framework/pull/56310

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113🔥2🌚1
Совет по PHP/Laravel

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

Это позволяет сделать кодовую базу чище и более организованно

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👎64
Совет по PHP: знали ли вы, что isset() может принимать несколько аргументов?

Функция вернёт true только в том случае, если все переданные переменные считаются установленными.
Проверка выполняется слева направо и останавливается при первом необъявленном или null-значении.

Документация: https://php.net/manual/en/function.isset.php

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
22👍16🤔1
Используйте метод upsert() для эффективных операций "вставить или обновить" в одном SQL-запросе.
Это намного быстрее, чем сначала проверять существование записи, особенно при массовых вставках.

Документация: https://laravel.com/docs/12.x/queries#upserts

Примечание: Все базы данных, кроме SQL Server, требуют, чтобы колонки, указанные во втором аргументе метода upsert, имели первичный или уникальный индекс.
Кроме того, драйверы баз данных MariaDB и MySQL игнорируют второй аргумент upsert и всегда используют первичный и уникальные индексы таблицы для определения существующих записей.

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥2
Совет по Laravel для API

Хочешь единообразные ответы об успехе и ошибках?

Вот пример кода, который я увидел в одном опенсорс проекте:

Зарегистрируй кастомные функции как макросы (Macro) в фасаде Response через ServiceProvider.

Конечно, альтернатива — вынести эти методы в трейты или базовый контроллер

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥52
This media is not supported in your browser
VIEW IN TELEGRAM
Плагин Laravel Idea теперь БЕСПЛАТНЫЙ для пользователей PhpStorm

https://blog.jetbrains.com/phpstorm/2025/07/laravel-idea-is-now-free/

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥238👍4🤯2🌚2
Нужно добавить несколько колонок в определённую позицию таблицы?

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

Ссылка на документацию: https://laravel.com/docs/12.x/migrations#column-order

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131
При создании Eloquent-скоупов, если у вас есть одинаковые скоупы в нескольких моделях, использующие одно и то же имя колонки, указывайте имя таблицы в качестве префикса.

Это поможет избежать SQL-ошибок вида "ambiguous column".

Источник: проект Larasense
https://github.com/nabilhassen/larasense/blob/main/app/Models/Material.php

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
Нужно получать значения из входных данных в нужном типе, а не всегда как строки?

Используй методы integer(), boolean(), array(), date() и enum()

Больше никакого ручного кастинга.

Документация: https://laravel.com/docs/12.x/requests#retrieving-input

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍4
Новая статья — несколько важных моментов, которые стоит учитывать при использовании SQLite в продакшене (с точки зрения приложений на Laravel)

Рассматриваются:
1. Journal mode
2. Data types
3. Concurrent transactions (the dreaded "database is locked" error)

> Читать

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Совет по Laravel

Используй insertOrIgnore() для вставки записей с пропуском дубликатов без выброса ошибок

Отлично подходит для массового импорта, когда часть данных уже может существовать.
Метод тихо игнорирует ограничения, не выбрасывая исключения.

Ссылка на документацию: https://laravel.com/docs/12.x/queries#insert-statements

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5