Laravel 11: дата выхода и новые возможности
Laravel — мощный и гибкий PHP-фреймворк, завоевавший огромную популярность в мире веб-разработки.
Он предоставляет разработчикам богатый набор инструментов и функций, облегчающих создание надёжных и масштабируемых веб-приложений.
11-я версия Laravel выйдет в следующем году, и уже сейчас о ней кое-что известно.
Когда выйдет Laravel 11
Согласно политике поддержки, выпуск Laravel 11 запланирован на 6 февраля 2024 года.
Однако выход Laravel 11 не означает, что вы должны немедленно обновить все свои проекты.
Последний раз фреймворк получил LTS в шестой версии, но каждая основная версия имеет два года обновлений, что должно дать вам достаточно времени для приведения кодовой базы в порядок и её обновления.
Laravel 10 будет получать исправления ошибок до 6 августа 2024 года, а исправления безопасности — до 4 февраля 2025 года.
Версия | PHP | Дата выхода | Исправления ошибок до | Исправления безопасности до |
---|---|---|---|---|
10 | 8.1 | 14 Февраля 2023 | 6 Августа 2024 | 4 Февраля 2025 |
11 | 8.1 | Первый квартал 2024 | 5 Августа 2025 | 3 Февраля 2026 |
Как установить Laravel 11
Laravel 11 ещё не выпущен. Поэтому в официальном инсталляторе Laravel необходимо использовать флаг --dev
, который берет основную ветку из репозитория laravel/laravel
, всегда содержащего самый свежий код.
laravel new hello-world --dev
Или, если вы предпочитаете использовать Composer в явном виде:
composer create-project --prefer-dist laravel/laravel hello-world dev-master
Что нового в Laravel 11: возможности и изменения
Прекращение поддержки PHP 8.1
Когда выйдет Laravel 11, PHP 8.2 будет уже реализован, а PHP 8.3 также будет стабилен. Имея поддержку двух последних основных версий PHP, Laravel может двигаться вперёд и отказаться от 8.1.
Но помните: ваши приложения на Laravel необязательно обновлять до самой последней версии сразу после её выхода.
Особенно если у вас есть проекты с платными клиентами или сотрудниками, которые зависят от них в своей работе.
Эти проекты должны медленно, но верно двигаться вперёд, проводя всестороннее тестирование. Не торопитесь.
См. pull request на GitHub: [11.x] Отказ от поддержки PHP 8.1
Встречайте более минималистичный скелет приложения
Laravel 11 поставляется с более компактным скелетом приложения. Идея заключается в том, что вам нужно меньше работать с шаблонным кодом. С этим нельзя не согласиться. Вот подробности этого изменения:
- В
AuthServiceProvider
свойство$policies
было удалено, так как фреймворк обнаруживает их автоматически. - В
EventServiceProvider
отпала необходимость вSendEmailVerificationNotification
, поскольку его регистрирует базовыйEventServiceProvider
. Вы также заметите, что авто-обнаружение событий теперь включено по умолчанию. BroadcastServiceProvider
больше не нужен и был удалён. Фреймворк не загружает автоматически файлroutes/channels.php
.RedirectIfAuthenticated
стал более простым благодаря основе во внутренностях фреймворка.- Middleware
Authenticate
больше не вызывает функциюredirectTo()
для JSON-маршрутов. Это устраняет ненужную тернарную проверку. - Из скелета были удалены middleware
EncryptCookies
,PreventRequestsDuringMaintenance.php
,TrimStrings
,TrustHosts
,TrustProxies
,ValidateCsrfToken
иValidateSignature
. - Пользовательские команды Artisan теперь загружаются автоматически. Консольному ядру не нужно вызывать метод
load()
. - Удалён файл
routes/console.php
. В ядре консоли можно регистрировать команды Artisan, основанные на замыкании. - Некоторые миграции были объединены в один файл или просто удалены.
- Трейты
AuthorizesRequests
иValidatesRequests
были удалены из базового контроллера. - Файл
bootstrap/app.php
сократился всего до трёх строк кода. - Обработчик исключений был удалён.
Здесь представлен первоначальный PR для Laravel 10 ([10.x] Slimmer Application Skeleton), который впоследствии был перенесён в Laravel 11. В нем вы найдёте ещё больше информации, что было изменено.
Новая возможность: Функция Dumpable
(dump() и dd() для ваших объектов)
Данный pull request вводит в Laravel 11 новый трейт Dumpable
, призванный заменить существующие методы dd
и dump
в большинстве классов фреймворка.
Этот трейт позволяет пользователям Laravel и авторам пакетов легко включать отладочные методы в свои классы, используя этот трейт.
Приведём пример кода, показывающий, как это можно использовать:
<?php
namespace App\ValueObjects;
use Illuminate\Support\Traits\Dumpable;
use Illuminate\Support\Traits\Conditionable;
class Address
{
use Conditionable, Dumpable;
// ...
}
$address = new Address;
// Before:
$address->foo()->bar();
// After:
$address->foo()->dd()->bar();
См. pull request на GitHub: [11.x] Adds Dumpable concern
Новая возможность: Новый и более удобный метод Model::casts()
Обычно в Laravel приведение атрибутов в модели Eloquent объявляется следующим образом:
class User extends Model
{
protected $casts = [
'email_verified_at' => 'datetime',
];
}
В Laravel 11 появилась возможность определять приведение через метод casts()
в модели, что даёт возможность использовать статические методы класса, выполняющего приведение. Вот как это выглядит:
class User extends Model
{
protected function casts(): array
{
return [
'foo' => AsCollection::using(FooCollection::class),
];
}
}
Кроме того, теперь можно задавать приведения в виде массива:
class User extends Model
{
// Даже в старом свойстве $casts!
protected $casts = [
'foo' => [AsCollection::class, FooCollection::class],
];
protected function casts() : array
{
return [
'foo' => [AsCollection::class, FooCollection::class],
];
}
}
Метод casts()
имеет больший приоритет, чем свойства $casts
.
Все эти изменения являются не нарушающими, то есть они не повлияют на ваш текущий код, если вы обновитесь до Laravel 11.
См. pull request на GitHub: [11.x] Adds Model::casts() method and named static methods for built-in casters
Подготовка к выпуску Laravel 11
Здесь приведён список всех найденных мной слияний PR для подготовки релиза Laravel 11:
- [11.x] Set up Laravel v11
- [11.x] Update Testbench dependencies for Laravel 11
- [11.x] Removed old WithoutEvents trait
- И многое другое!
Как внести свои собственные функции и исправления в Laravel 11
Знаете ли вы, что можете исправить возникшие ошибки или создать новую большую возможность для Laravel 11?
- Посмотрите, что происходит с Laravel 11 на GitHub: https://github.com/laravel/framework/pulls. Pull Requests подскажут вам, что уже сделано.
- Возьмите одну из ваших проблем с фреймворком и создайте решение самостоятельно.
- Отправьте PR в репозиторий laravel/framework, соберите отзывы, улучшите и добейтесь слияния.
Важный совет для повышения шансов на слияние: добавьте во фреймворк что-то, что будет полезно для разработчиков, но не доставит хлопот с поддержкой для Тейлора и его команды в долгосрочной перспективе.
Вот что нового появилось в Laravel 11 на данный момент.
Но до февраля 2024 года будет ещё больше.