Цього тижня команда Laravel випустила версію v11.34, яка включає метод Request::fluent(), помічник spellOrdinal() для чисел, умовні визначення маршрутів, спрощені фальшиві відповіді на HTTP-запити та багато іншого.
# Написання порядкових чисел словами
Joel Stein додав метод spellOrdinal() до помічника Number, що дозволяє записувати порядкові числа словами:
'The ' . Number::spellOrdinal(40) . ' president of the United States is Ronald Reagan';
Детальніше у Pull Request #53661.
# Додавання умовного трейту до маршрутів
@Boorinio запропонував трейти 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-відповіді
Jason McCreary додав спрощений синтаксис для фальшивих HTTP-відповідей. Раніше було можливим використовувати масиви, але цього разу додано можливість використовувати рядки для тіла відповіді та цілі числа для коду статусу:
// Раніше
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()
Steve Bauman запропонував метод fluent() для класу HTTP Request, що дозволяє зручно передавати вхідні дані:
/** @var Illuminate\Http\Request $request */
$data = $request->fluent();
$data->title;
$data->body;
// тощо
Детальніше у Pull Request #53662.
# Сумісність коду з PHP 8.4
Mior Muhammad Zaki додав сумісність коду з PHP 8.4 для версій Laravel 10.x та 11.x:
# Примітки до випуску
Повний список нових функцій і оновлень можна знайти нижче, а також різницю між 11.33.0 та 11.34.0 на GitHub. Нижче наведені примітки до випуску з журналу змін:
# v11.34.0
- [10.x] Виправлено обробку масиву для очищення ланцюга від @Bencute в #53455
- [11.x] Додано підтримку
BackedEnumпри використанніfromRoute()уMakesHttpRequestsвід @wietsewarendorff в #53593 - [11.x] Поліпшено тестування від @crynobone в #53586
- [11.x] Перенесено перевірку
$ownerKeyуMorphToдля кращої сумісності від @crynobone в #53592 - Скинуто кеш атрибутів моделі Eloquent від @adamthehutt в #53583
- [11.x] Додано нестатичне обгортання JsonResource від @SanderMuller в #53543
- [10.x] Сумісність з PHP 8.4 від @crynobone в #53612
- Додано
assertCount()для фальшивого сховища від @ahmadreza1383 в #53620 - Виправлено тип параметра у
Paginatorдля phpstan від @Afrowson в #53615 - [11.x] Додано генерики для
Arr::last()від @talkinnl в #53619 - Додано типізоване замикання до завантажувачів у консольному застосунку від @MatusBoa в #53613
- Рефакторинг: деякі покращення продуктивності та читабельності від @dshafik в #53596
- [11.x] Покращено документацію для роботи з enum-входами від @axlon в #53625
- [11.x] Пропуск конструювання об'єкта, якщо немає встановлених колбеків від @axlon в #53502
- Метод
bearerTokenстане нечутливим до регістру завдяки @samtlewis в #53627 - [11.x] Виправлення успадкування атрибутів для вкладених груп розкладу від @istiak-tridip в #53626
- [11.x] Підтримка PHP 8.4 від @crynobone в #53468
- ☁️ від @taylorotwell в #53623
- [11.x] Виправлення помилки в docblock від @stancl в #53636
- Додано
Number::spellOrdinal()для написання порядкових чисел словами від @joelstein в #53661 - [11.x] Додано резервний метод PausePrompt від @jwpage в #53660
- [11.x] Виправлення
SyntaxErrorпри попередньому завантаженні Vite з порожніми активами від @jnoordsij в #53659 - [11.x] Поліпшено типи
class-stringвід @timacdonald в #53657 - [11.x] Використання типу
neverдля методів, які завжди викликають виключення від @tamiroh в #53643 - [11.x] Додано умовність до маршрутів від @Boorinio в #53654
- [11.x] Метод
withoutDeferвідтепер також повертає$thisвід @tamiroh в #53644 - Додано спрощення для фальшивих HTTP-відповідей від @jasonmccreary в #53663
- Використано метод середовища замість методу isLocal від @NaokiTsuchiya в #53638
- [11.x] Виправлення: забезпечити, щоб згенеровані політики повертали булеві значення від @Aluisio-Pires в #53632
- Bus assertempty від @jasonmccreary в #53664
- [11.x] Поліпшення поведінки групи розкладів від @istiak-tridip в #53641
- [11.x] Додано метод
Request::fluent()від @stevebauman в #53662 - [11.x] Підтримка іменованих in-memory зв'язків SQLite від @stancl в #53635
- Типи імен подій та зворотних викликів слухачів від @rudiedirkx в #53642
- Очищення тестів з #53664 від @jasonmccreary в #53672
- [11.x] Виправлення: запобігти створенню недійсних параметрів облікових даних AWS від @robchett в #53633
- [11.x] Розширено можливості доступу та перетворення даних
Support\Fluentвід @stevebauman в #53665