Подписывайтесь на наш Telegram канал и будьте в курсе всех событий.
Поддержите нас - каждый вклад важен!
Поддержите нас - каждый вклад важен!

Примечания к релизу

Вы просматриваете документ для прошлой версии.
Рассмотрите возможность обновления вашего проекта до актуальной версии 11.x. Почему это важно?

Схема версионирования

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

Ссылаясь на фреймворк Laravel или его компоненты из вашего приложения или пакета, вы всегда должны использовать ограничение версии ^10.0, поскольку мажорные релизы Laravel действительно включают критические изменения. Однако мы всегда стремимся к тому, чтобы вы могли выполнить обновление до новой мажорной версии в течение дня или менее.

Исключения

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

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

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

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

Версия PHP (*) Дата релиза Исправление ошибок до Исправления безопасности до
8 ¹ 7.3 - 8.1 September 8th, 2020 July 26th, 2022 January 24th, 2023
9 ¹ 8.0 - 8.2 February 8th, 2022 August 8th, 2023 February 6th, 2024
10 8.1 - 8.3 February 14th, 2023 August 6th, 2024 February 4th, 2025
11 8.2 - 8.3 March 12th, 2024 August 5th, 2025 February 3rd, 2026
¹ End of life
² Только исправления безопасности

(*) Поддерживаемые версии PHP

Laravel 10

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

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

Laravel 10 продолжает улучшения, начатые в Laravel 9.x, добавляя типы аргументов и возвращаемых значений для всех методов скелета приложения и всех stub файлов, используемых для создания классов во всем фреймворке. Кроме того, внедрен новый, удобный для разработчика слой абстракции для запуска и взаимодействия с внешними процессами. Кроме того, появился Laravel Pennant для удобного управления “флагами функций” вашего приложения.

PHP 8.1

Для Laravel 10.x минимальная требуемая версия PHP – 8.1.

Типы

Структуру приложения и подсказки типов stub были предоставлены Нуно Мадуро.

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

Laravel 10.x тщательно обновляет структуру приложения и все stubs, используемые фреймворком, чтобы внедрить типы аргументов и возвращаемых значений во все сигнатуры методов. Кроме того, избыточная информация о “блоке документации”(DocBlock) для подсказок типов была удалена.

Эти изменения полностью совместимы с существующими приложениями. Следовательно, существующие приложения без этих подсказок типов будут продолжать работать нормально.

Laravel Pennant

Laravel Pennant был разработан Тимом Макдональдом.

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

Возможности можно легко определить с помощью метода Feature::define:

use Laravel\Pennant\Feature;
use Illuminate\Support\Lottery;

Feature::define('new-onboarding-flow', function () {
    return Lottery::odds(1, 10);
});

После того как функционал был определен, вы легко можете определить, имеет ли текущий пользователь доступ к указанному функционалу:

if (Feature::active('new-onboarding-flow')) {
    // ...
}

Конечно, для удобства также доступны директивы Blade:

@feature('new-onboarding-flow')
    <div>
        <!-- ... -->
    </div>
@endfeature

Pennant предоставляет разнообразный и более продвинутый функционал и API. Для получения дополнительной информации, пожалуйста, ознакомьтесь с подробной документацией Pennant.

Взаимодействие с процессами

Уровень абстракции для взаимодействия с процессами был предоставлен Нуно Мадуро и Тейлором Отвеллом.

Laravel 10.x появился красивый уровень абстракции для запуска и взаимодействия с внешними процессами через новый фасад Process:

use Illuminate\Support\Facades\Process;

$result = Process::run('ls -la');

return $result->output();

Процессы могут быть запущены в пулах, что обеспечивает удобное выполнение и управление параллельными процессами.

use Illuminate\Process\Pool;
use Illuminate\Support\Facades\Process;

[$first, $second, $third] = Process::concurrently(function (Pool $pool) {
    $pool->command('cat first.txt');
    $pool->command('cat second.txt');
    $pool->command('cat third.txt');
});

return $first->output();

Кроме того, процессы могут быть эмулированы для удобного тестирования.

Process::fake();

// ...

Process::assertRan('ls -la');

Для получения дополнительной информации по взаимодействию с процессами обратитесь к подробной документации по процессам.

Test Profiling

Профилирование теста было предоставлено Нуно Мадуро.

Команда Artisan test теперь поддерживает новую опцию --profile, которая позволяет легко выявлять самые медленные тесты в вашем приложении:

php artisan test --profile

Для удобства, информация о самых медленных тестах будет отображаться непосредственно в выводе командной строки (CLI):

Скрин вывода в коммандную строку

Создание каркаса Pest

Теперь новые проекты Laravel могут быть созданы с использованием каркаса тестирования Pest по умолчанию. Чтобы воспользоваться этой функцией, укажите флаг --pest при создании нового приложения с помощью установщика Laravel:

laravel new example-application --pest

Подсказки (prompts) генератора CLI

Подсказки для CLI генератора были предоставлены Джесс Арчер .

Для улучшения опыта разработчика в рамках фреймворка, все встроенные команды make Laravel теперь не требуют ввода. Если команды вызываются без ввода, вас попросят ввести необходимые аргументы:

php artisan make:controller

Обновление интерфейса Horizon / Telescope

Horizon и Telescope получили свежий, современный дизайн с улучшенной типографией, интервалами и общим дизайном: