В Laravel 12.11 додано геттери для типізованих масивів

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 01 травня, 2025
Ознайомтеся з новими можливостями випуску Laravel v12.11.0, серед яких типізовані геттери для Arr, нові функції для Job Payload та багато іншого. Чи готові ви дізнатися, які зміни можуть спростити вашу роботу з Laravel? Читайте далі
```html

Команда Laravel випустила версію v12.11.0, що включає нові можливості: типізовані Arr методи-геттери, доповнення до вантажу роботи, клас FakeJob тепер реалізує контракт Job та інші зміни:

# Типізовані Геттери для Arr Helpers

Ентоні Тіббс додав типізовані геттери для класу підтримки Arr з підтримкою array, boolean, float, integer та string. Кожен метод намагатиметься повернути значення певного типу, а при невідповідності викидатиме виключення:

use Illuminate\Support\Arr;
$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
 
$value = Arr::array($array, 'languages'); // ['PHP', 'Ruby']
$value = Arr::array($array, 'name'); // генерує InvalidArgumentException

Деталі можна знайти у Pull Request #55567.

# Додано CreatedAt та Original Delay до Вантажу Роботи

Тейлор Отвелл додав інформацію про створення вантажу та затримку роботи до вантажів. Затримка — опціональна затримка в секундах, а createdAt — це часовий штамп, коли було створено вантаж роботи:

$job->payload();
/*
Тепер включає: ['delay' => 5, 'createdAt' => 1745965273]
*/

Деталі за посиланням: Pull Request #55529.

# Переконатися, що FakeJob Реалізує Контракт Job

Тім Макдональд додав контракт Illuminate\Contracts\Queue\Job до класу FakeJob, що використовується в тестах для підроблення чергових завдань:

Підроблена завдання застосовується там, де очікується реалізація контракту роботи.

Це забезпечує підтримку строгого типізування контракту роботи, коли, наприклад, слухаються події і передається екземпляр завдання.

Деталі у Pull Request #55574.

# Примітки до випуску

Повний список нових можливостей та оновлень можна знайти нижче, а також порівняння між 12.10.0 та 12.11.0 на GitHub. Наведені примітки до випуску взяті з changelog:

# v12.11.0

```