Дата публикации: 14.10.2023 в 13:30

Взгляните на то, что будет в Laravel 11

1 комментария

Выпуск Laravel 11 запланирован не раньше первого квартала 2024 года. Но на Laracon US 2023 были опубликованы некоторые новые функции, о которых Тейлор рассказал в своем выступлении.

Оптимизированная структура каталогов

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

  • Контроллеры больше ничего не расширяют по умолчанию.
  • Больше нет каталога с мидлварами. В настоящее время Laravel включает девять мидлваров, многие из которых вы бы никогда не настроили. Теперь каталог с мидлварами переедет в 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 $middleware) {
         $middleware->web(append: LaraconMiddleware::class):
    })

Изменения в Моделях

Касты моделей теперь определяются как метод, а не как свойство. Когда они определены как метод, мы можем делать и другие вещи. Например, вызывать другие методы непосредственно из Кастов. Вот пример использования нового метода из 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.

То же самое и с веб-сокетами - php artisan install:broadcasting.

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

Ядро консоли будет удалено, и вместо этого вы сможете определять консольные команды прямо в routes/console.php.

Именованные аргументы

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

Минимум - PHP 8.2

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

Политика поддержки Laravel

Для всех версий Laravel исправления ошибок предоставляются на 18 месяцев, а исправления безопасности — на 2 года. Для всех дополнительных библиотек, включая Lumen, исправлены ошибки только в последней основной версии.

Версия PHP (*) Выпускать Исправления ошибок до Исправления безопасности до

Laravel 9

8,0 - 8,2 8 февраля 2022 г. 8 августа 2023 г. 6 февраля 2024 г.

Laravel 10

8,1 - 8,2 1 квартал 2023 г. 6 августа 2024 г. 4 февраля 2025 г.

Laravel 11

8.2 1 квартал 2024 г. 5 августа 2025 г. 3 февраля 2026 г.

Заключение

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

Оригинал статьи - https://laravel-news.com/laravel-11

Комментарии (1)

Давид
Давид
12.11.2023 в 07:01
👍👍
ОбщайсяРазвивайсяУчисьРаботай
ОбщайсяРазвивайсяУчисьРаботай
ОбщайсяРазвивайсяУчисьРаботай
ОбщайсяРазвивайсяУчисьРаботай