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

Связь: @devmangx
Download Telegram
Совет по Laravel

Когда вы развёртываете изменения, пользователи могут столкнуться с недоступностью сайта.

Вы можете отобразить общую страницу «обслуживания», запустив команду php artisan down перед деплоем и php artisan up после него.

Также флаг --refresh=15 будет автоматически обновлять эту страницу каждые 15 секунд, чтобы проверить, остаётся ли сайт в режиме обслуживания. Если нет — будет отображена обычная страница проекта.

Наконец, вы можете кастомизировать страницу обслуживания, определив свой шаблон в resources/views/errors/503.blade.php.

Подробнее в документации:
https://laravel.com/docs/12.x/configuration#maintenance-mode

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍1
👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
😁302👍1
Новое в Laravel 12: больше не нужно вызывать new Resource() или Resource::collection().

Вместо этого используйте новые методы toResource() и toResourceCollection().

Теперь Laravel автоматически определяет соответствующие классы ресурсов

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

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥3
Ошибки неизбежны в любом приложении — они всегда будут возникать на вашем пути.

Поэтому все языки программирования предоставляют трассировку стека и сообщение об ошибке, чтобы вы могли отладить код и выяснить коренную причину проблемы.

Но иногда такие сообщения могут непреднамеренно раскрывать конфиденциальные данные вашего приложения.

Именно по этой причине в PHP был введён атрибут SensitiveParameter, чтобы вы могли скрыть такие параметры из трассировки стека и логов ошибок.

Смотрите пример выше

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

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
8🤔2
Возвращение к PHP после нескольких лет в экосистеме JavaScript

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
😁51🌚51👍1
Совет по Laravel

Используйте Route::resource('photos.comments', CommentController::class), чтобы автоматически сгенерировать ВЛОЖЕННЫЕ маршруты ресурсов.

Шаблон URL будет таким: /photos/{photo}/comments/{comment}

Ссылка на документацию: https://laravel.com/docs/12.x/controllers#restful-nested-resources

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111
Новый пакет: Laravel Console Timer

https://github.com/mc0de/console-timer

Простой трейт, который добавляет отслеживание времени выполнения к вашим консольным командам в Laravel.

Полезен для:

🔹Отслеживания времени выполнения команд

🔹Измерения времени выполнения отдельных операций внутри команд

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84
В PHP 8.5 появятся две новые функции для работы с массивами — array_first() и array_last() — для удобного получения соответственно первого и последнего значения массива

Подробнее: https://amitmerchant.com/array-first-last-php-85/

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥6👍5👎1
Совет по Laravel

Нужно жадно загрузить связи, но при этом выбрать только определённые столбцы?

Используйте метод with() с указанием нужных столбцов, чтобы сократить использование памяти и размер запроса при работе с большими объёмами данных.

Ссылка на документацию: https://laravel.com/docs/12.x/eloquent-relationships#eager-loading-specific-columns

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103
Вы можете просто вложить блок match в PHP, если вам нужна немного большая точность для группы совпадений

Это аккуратно, чисто и очень читаемо.

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍178
Composer Package Executor

Это CLI-инструмент, который позволяет выполнять любую команду из любого Composer-пакета, даже если этот пакет не установлен в вашем проекте.

По сути, это как npx, но для Composer

https://github.com/imliam/cpx

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍4
Новое в Symfony 7.3: компонент ObjectMapper

Во многих Symfony-приложениях часто используют DTO-объекты для переноса данных между слоями. Например, вы можете создать DTO на основе Doctrine-сущности, изменить его с помощью Symfony Form, а затем снова замапить обновлённые данные в сущность.

Код для маппинга DTO обратно в сущность часто выглядит так:
$user = new User();
$user->name = $dto->name;
$user->email = $dto->email;
$user->roles = ['ROLE_USER'];
// …


Это утомительно и подвержено ошибкам. Поэтому в Symfony 7.3 введён новый компонент ObjectMapper для переноса данных между объектами. С его помощью предыдущий пример становится намного проще:

// при создании нового объекта на основе другого
$user = $mapper->map($dto, User::class);

// при обновлении существующего объекта другим объектом
$mapper->map($dto, $user);


Подробнее:
https://symfony.com/blog/new-in-symfony-7-3-objectmapper-component

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍6
🥳 Судя по результатам голосования, похоже, в PHP 8.5 появится оператор Pipe.

https://wiki.php.net/rfc/pipe-operator-v3

#php

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍5🤔4👎1
FrankenPHP теперь официально поддерживается Фондом PHP.

Репозиторий проекта будет перенесён в организацию PHP на GitHub

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥174👍3🤔2
Задумывались, как работает загрузка файлов в PHP? 🤔

Когда пользователь отправляет файл, PHP предоставляет специальный массив $_FILES с именем, размером, типом и временным местоположением файла.

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👀2👎1🤯1🌭1
Совет по Laravel

Знали ли вы, что значения по умолчанию для столбцов базы данных можно задавать не только на уровне базы данных в миграциях, но и на уровне Eloquent-модели с помощью свойства $attributes?

Ссылка на документацию: https://laravel.com/docs/12.x/eloquent#default-attribute-values

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍5
Ускорьте работу Laravel: Мой запрос стал выполняться на 30 секунд быстрее

Я заменил whereNotIn() на leftJoin()
— и запрос стал выполняться на 30 секунд быстрее.

Таблица, по которой выполнялся поиск, содержала более 800 тысяч записей.

Вот 10 быстрых способов оптимизировать запросы в Laravel:

🔹Используйте leftJoin() вместо whereNotIn()
— быстрее и эффективнее.

🔹Замените whereIn() на whereExists()
— экономит память.

🔹Выбирайте только нужные столбцы через select()
— избегайте User::all().

🔹Обрабатывайте большие объемы данных по частям через chunk()
— не загружайте всё сразу.

🔹Используйте pluck() вместо get()
— быстрее при выборке одного столбца.

🔹Проверяйте наличие записей через exists() вместо count() > 0.

🔹Используйте upsert() вместо updateOrInsert()
— меньше запросов.

🔹Пагинируйте результаты через paginate()
— не загружайте все данные сразу.

🔹Кэшируйте часто используемые запросы через cache()
— снижает нагрузку на базу данных.

🔹Избегайте жадной загрузки в циклах, используйте load()
— эффективная загрузка связей.

Каждая миллисекунда имеет значение.
Небольшие изменения = значительный прирост производительности ✌️

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🤔42🔥2👎1