Laravel 11: дата выхода и новые возможности

Источник: «Laravel 11: release date and new features»
Laravel 11 будет выпущен 6 февраля 2024 года. Его разработка продолжается до сих пор. Давайте рассмотрим все значимые новые возможности, о которых мы уже знаем.

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

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

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

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

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

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

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

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

ВерсияPHPДата выходаИсправления ошибок доИсправления безопасности до
108.114 Февраля 20236 Августа 20244 Февраля 2025
118.1Первый квартал 20245 Августа 20253 Февраля 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 поставляется с более компактным скелетом приложения. Идея заключается в том, что вам нужно меньше работать с шаблонным кодом. С этим нельзя не согласиться. Вот подробности этого изменения:

Здесь представлен первоначальный 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:

Как внести свои собственные функции и исправления в Laravel 11

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

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

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

Вот что нового появилось в Laravel 11 на данный момент.

Но до февраля 2024 года будет ещё больше.

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

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

12 лучших практик безопасности Laravel на 2023 год

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

PHP функция max()