Что появится в Laravel 11

Источник: «A look at what's coming to Laravel 11»
Выпуск Laravel 11 запланирован на 12 марта 2024 года, но давайте рассмотрим некоторые из анонсированных новых возможностей.

Выход Laravel 11 запланирован на 12 марта 2024 года, но некоторые новые возможности уже обнародованы, и Тейлор рассказал о некоторых новых крупных улучшениях в своём докладе на Laracon:

Упорядоченная структура каталога

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

Контроллеры больше не расширяют ничего по умолчанию.

Больше нет каталога middleware. В настоящее время Laravel включает девять middleware, и многие из них вы никогда не будете настраивать. Однако если вы захотите их настроить, то это будет перенесено в App/ServiceProvider. Например:

public function boot(): void
{
EncryptCookies::except(['some_cookie']);
}

Больше нет Http/Kernel

Большинство вещей, которые раньше можно было сделать в Kernel, теперь можно сделать в Bootstrap/App.

return Application::configure()
->withProviders ()
-withRouting(
web: __DIR__.'/../routes/web.php'
commands: __DIR__.'/../routes/console.php',
)
->withMiddleware(function(Middleware Smiddleware) {
$middleware->web(append: LaraconMiddleware::class):
})

Изменён casts Модели

Теперь casts Модели определяется не как свойство, а как метод. Когда он определён как метод, мы можем делать различные вещи, например, вызывать другие методы непосредственно из casts. Приведём пример с использованием новой коллекции Laravel 11 AsEnumCollection:

protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
'options'=AsEnumCollection::of(UserOption::class),
];
}

Изменения конфигурации

В Laravel существует большое количество конфигурационных файлов, а в Laravel 11 они удалены, и все опции конфигурации каскадно передаются дальше. В .env были добавлены все опции, которые вы хотели бы задать.

В дополнение к этому появилась новая команда config:publish, позволяющая вернуть в систему любую конфигурацию. Даже если вы вернёте их обратно, новая каскадная возможность позволит вам удалить все опции, которые вы не хотите настраивать.

Уменьшение миграций по умолчанию

Когда вы запускаете новое приложение Laravel, оно поставляется с некоторыми миграциями по умолчанию от 2014 и 2019 годов. Теперь они будут поставляться с удалёнными датами и перемещены всего в два файла.

Изменения в маршрутах

По умолчанию будет только два файла маршрутов, console.php и web.php. Маршруты API теперь станут опциональными с помощью команды php artisan install:api, вы получите файл маршрутов API и Laravel Sanctum.

То же самое с трансляцией через websocket, php artisan install:broadcasting.

Ядро консоли удалено

Ядро консоли (Console Kernel) удаляется, и вместо него вы сможете определять команды консоли непосредственно в файле routes/console.php.

Поддерживается минимум PHP 8.2

Это было раннее решение, но для приложений Laravel 11 требуется минимум PHP 8.2. Если вы используете более старую версию PHP, сейчас самое время обновить её.

Подведение итогов

Пока все эти функции считаются бета-версией Laravel 11 и призваны улучшить ваш рабочий процесс. Всё может измениться, и мы будем обновлять этот пост по мере анонсирования новых функций.

Дополнительные материалы

Предыдущая Статья

Четыре способа быстрого добавления CSS на Laravel сайт

Следующая Статья

Как добавить CSS-анимацию раскрытия к изображениям