На этой неделе команда Laravel выпустила версию 11.34, представив новые возможности, такие как метод Request::fluent(), хелпер Number::spellOrdinal() для преобразования чисел в порядковые слова, условное определение маршрутов, сокращенные методы для фейковых HTTP-ответов и многое другое.


Порядковые числительные в виде слов

Это случилось! Добавлен метод spellOrdinal() в хелпер Number, позволяющий преобразовывать порядковые числительные в текстовый формат:

echo 'The ' . Number::spellOrdinal(40) . ' president of the United States is Ronald Reagan';

Подробнее: Pull Request #53661.

Условные маршруты

Добавлен трейд Conditional в класс Route, что позволяет разработчикам определять маршруты с условной логикой:

Route::middleware('shop')
    ->domain('{shop}.domain.com')
    ->when(App::isProduction(), function ($route) {
        $route->whereIn('shop', app(ShopService::class)->getShopSlugs());
    });

Подробнее: Pull Request #53654.

Упрощенные фейковые HTTP-ответы

Джейсон МакКриари предложил сокращенные методы для имитации HTTP-ответов. Теперь можно использовать строки или числа вместо более сложного синтаксиса:

До версии 11.34:

Http::fake([
    'google.com' => Http::response('Hello World'),
    'github.com' => Http::response(['foo' => 'bar']),
    'forge.laravel.com' => Http::response(status: 204),
]);

После:

Http::fake([
    'google.com' => 'Hello World',
    'github.com' => ['foo' => 'bar'],
    'forge.laravel.com' => 204,
]);

Подробнее: Pull Request #53663.

Метод Request::fluent()

Представлен метод fluent() для класса Request, который позволяет легко и элегантно работать с входными данными:

/** @var Illuminate\Http\Request $request */
$data = $request->fluent();

echo $data->title;
echo $data->body;
// и так далее

Подробнее: Pull Request #53662.

Поддержка PHP 8.4

Добавлена совместимость Laravel 10.x и 11.x с PHP 8.4, что позволяет использовать новейшие возможности языка.

Примечания к выпуску

С полным списком изменений можно ознакомиться в changelog, а подробное сравнение версий 11.33.0 и 11.34.0 доступно на GitHub.

Комментарии (0)