Laravel 11: дата выпуска, новые функции и улучшения

Laravel 11 — это следующий крупный выпуск популярного фреймворка PHP с новыми функциями и улучшениями. Из этого урока вы узнаете: Когда выйдет Laravel 11? Как установить Ларавель 11? Что нового в Laravel 11? и более.

Laravel — это мощная и гибкая веб-инфраструктура PHP, которая завоевала огромную популярность в мире веб-разработки.

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

11-я версия Laravel выйдет в следующем году, и мы уже знаем о ней кое-что.

Оглавление:

  • Когда выйдет Laravel 11?
  • Как установить Ларавель 11?
  • Что нового в Laravel 11: особенности и изменения
  • Прекращена поддержка PHP 8.1.
  • Добро пожаловать в более минималистичный скелет приложения
  • Проблема Dumpable (dump() и dd() ваших объектов)
  • Новый и более удобный метод Model::casts()
  • Подготовка к выпуску Laravel 11
  • Как внести свой вклад в Laravel 11?

Когда выйдет Laravel 11?

Согласно Политике поддержки , выпуск Laravel 11 запланирован на 6 февраля 2024 года .

Однако выпуск Laravel 11 не означает, что вам нужно немедленно обновить все свои проекты.

В последний раз у фреймворка была LTS (долгосрочная поддержка) в версии 6, но каждая основная версия имеет два года обновлений , что должно дать вам достаточно времени, чтобы проверить свою кодовую базу и обновить ее.

Laravel 10 будет получать исправления ошибок до 6 августа 2024 года и исправления безопасности до 4 февраля 2025 года.

ВерсияPHPВыпускатьИсправлены ошибки, покаИсправления безопасности до
 десять8.114 февраля 2023 г.6 августа 2024 г.4 февраля 2025 г.
 118.21 кв. 2024 г.5 августа 2025 г.3 февраля 2026 г.

Как установить Ларавель 11?

Laravel 11 еще не выпущен. Поэтому вы должны использовать флаг --dev в официальном установщике Laravel, который извлекает ветку master из репозитория 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 не нужно обновлять до последней и лучшей версии сразу после их выпуска.

Особенно, если у вас есть проекты с платными клиентами или сотрудниками, работа которых зависит от них.

Эти проекты должны медленно, но верно продвигаться вперед, проводя всестороннее тестирование. Не спешите.

См. запрос на вытягивание на GitHub: [11.x] Отказ от поддержки PHP 8.1

PHP 8.2

Добро пожаловать в более минималистичный скелет приложения

Laravel 11 поставляется с более тонким скелетом приложения. Идея заключается в том, что у вас должно быть меньше стандартного кода для работы. Я не мог не согласиться. Вот подробности этого изменения:

В AuthServiceProvider свойство $policies удалено, так как они автоматически обнаруживаются фреймворком.

В EventServiceProvider SendEmailVerificationNotification больше не требуется, так как базовый EventServiceProvider позаботится о его регистрации . Вы также заметите, что автоматическое обнаружение событий теперь включено по умолчанию.

BroadcastServiceProvider больше не нужен и был удален. Фреймворк не загружает файл route/channels.php автоматически .

RedirectIfAuthenticated теперь проще благодаря базовому во внутренностях фреймворка.

Промежуточное ПО Authenticate больше не вызывает redirectTo() для маршрутов JSON. Это удаляет ненужную троичную проверку.

Промежуточное ПО EncryptCookies , PreventRequestsDuringMaintenance.php , TrimStrings , TrustHosts , TrustProxies , ValidateCsrfToken и ValidateSignature удалено из скелета.

Пользовательские команды Artisan теперь загружаются автоматически. Нет необходимости вызывать метод load() в ядре консоли.

Маршруты /console.php были удалены. Команды Artisan на основе закрытия могут быть зарегистрированы в ядре консоли.

Некоторые миграции были объединены в один файл или просто удалены.

Трейты AuthorizesRequests и ValidatesRequests были удалены из базового контроллера .

Файл bootstrap /app.php был сокращен до 3 строк кода.

Обработчик исключения был удален.

Вот оригинальный PR для Laravel 10 ( [10.x] Slimmer Application Skeleton ), который позже был перенесен в Laravel 11. Вы найдете еще больше информации о том, что было изменено.

Проблема Dumpable (dump() и dd() ваших объектов)

Этот запрос на вытягивание вводит новый трейт Dumpable , предназначенный для замены текущих методов dd и dump в большинстве классов Laravel.

Эта черта позволяет пользователям 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();

См. запрос на вытягивание на GitHub: [11.x] Добавлена ​​возможность дампа.

Новый и более удобный метод Model::casts()

Обычно в Laravel вы объявляете приведение атрибутов в модели Eloquent следующим образом:

class User extends Model
{
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

Благодаря этому обновлению вы теперь можете определять приведение через метод casts() в своей модели, что дает вам возможность использовать статические методы из класса, выполняющего приведение. Вот как это выглядит:

class User extends Model
{
    protected function casts(): array
    {
        return [
            'foo' => AsCollection::using(FooCollection::class),
        ];
    }
}

Более того, теперь вы также можете указать свои приведения в виде массива:

class User extends Model
{
    // Even in the old $casts property!
    protected $casts = [
        'foo' => [AsCollection::class, FooCollection::class],
    ];
 
    protected function casts() : array
    {
        return [
            'foo' => [AsCollection::class, FooCollection::class],
        ];
    }
}

Метод casts () имеет приоритет над свойством $casts .

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

См. запрос на вытягивание на GitHub: [11.x] Добавляет метод Model::casts() и именованные статические методы для встроенных роликов.

Подготовка к выпуску Laravel 11

Вот список всех объединенных PR, которые я нашел для подготовки выпуска Laravel 11:

Как внести свой вклад в Laravel 11?

Знаете ли вы, что можете создать следующую большую функцию для Laravel 11?

  1. Посмотрите, что происходит с Laravel 11 на GitHub: https://github.com/laravel/framework/pulls . Pull Requests расскажет вам, что уже сделано.
  2. Возьмите одну из своих болевых точек с фреймворком и создайте решение самостоятельно.
  3. Отправьте PR в репозиторий laravel/framework, соберите отзывы, улучшите и объединитесь.

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

Запросы на включение в репозиторий laravel/framework.

Это то, что нового в Laravel 11 на данный момент.

Однако до февраля 2024 года все еще впереди.

#laravel #php

1.00 GEEK