Примечания к релизу
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 |
(*) Поддерживаемые версии 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 получили свежий, современный дизайн с улучшенной типографией, интервалами и общим дизайном: