1. Введение
  2. Заметки о Релизе

Присоединяйся к нашему Telegram сообществу @webblend!

Здесь ты найдешь сниппеты по Laravel и полезные советы по веб-разработке.

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

Laravel и его официальные пакеты следуют Семантическому Версионированию. Основные версии фреймворка выпускаются каждый год (примерно в первом квартале), в то время как второстепенные и исправительные версии могут выходить еженедельно. Второстепенные и исправительные версии никогда не должны содержать изменений, приводящих к нарушению совместимости.

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

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

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

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

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

Версия PHP (*) Релиз Исправления Ошибок До Исправления Безопасности До
8 7.3 - 8.1 8 сентября 2020 26 июля 2022 24 января 2023
9 8.0 - 8.2 8 февраля 2022 8 августа 2023 6 февраля 2024
10 8.1 - 8.2 14 февраля 2023 6 августа 2024 4 февраля 2025
11 8.2 Q1 2024 5 августа 2025 3 февраля 2026
End of life
Security fixes only

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

Laravel 10

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

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

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

PHP 8.1

Laravel 10.x требует минимальной версии PHP 8.1.

Типы

Каркас приложения и подсказки по типу в заглушках были предоставлены Нуно Мадуро.

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

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

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

Флаг Laravel

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');

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

Тестирование Профилирования

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

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

php artisan test --profile

Для удобства самые медленные тесты будут отображаться непосредственно в выводе CLI:

Шаблоны Pest

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

laravel new example-application --pest

Интерактивные запросы генератора CLI

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

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

php artisan make:controller

Обновление дизайна Horizon / Telescope

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