Команда Laravel випустила версію v12.14.0, яка включає нові можливості: метод Arr::from(), метод контейнера currentlyResolving(), нові методи except для класу Context та багато іншого:
# Метод Arr::from()
Сергій Данілченко додав метод Arr::from(), який отримує базовий масив елементів з переданого аргументу:
use Illuminate\Support\Arr;
Arr::from(collect(['name' => 'Laravel'])); // ['name' => 'Laravel']
Arr::from($jsonable); // Декодує об'єктні дані через `Jsonable` в масив
Arr::from($arrayable); // Повертає масив за допомогою методу `toArray()` об'єкта
Деталі можна знайти у Pull Request #55715.
# Нові методи Context
Володя Куршудян додав методи except() та exceptHidden() до класу Context, що дозволяє отримувати всі значення, окрім зазначених ключів:
Context::add('user_id', 42);
Context::add('request_id', 'req-abc123');
Context::add('ip_address', '192.168.0.1');
Context::add('sensitive_token', 'secret');
$logData = Context::except(['sensitive_token']);
// Результат:
[
'user_id' => 42,
'request_id' => 'req-abc123',
'ip_address' => '192.168.0.1',
]
Деталі можна знайти у Pull Request #55692.
# Утиліта currentlyResolving в контейнері
Джастін Селіга додав метод currentlyResolving, який повертає зв'язок, який контейнер зараз розв'язує:
#[Attribute(Attribute::TARGET_PARAMETER)]
class RegisteredFor implements ContextualAttribute
{
public static function resolve(self $attribute, Container $container): array
{
$resolving = $container->currentlyResolving(); // Production::class
return resolve(Registrar::class)->for($resolving);
}
}
Деталі можна знайти у Pull Request #55684.
# Примітки до випуску
Повний список нових можливостей та оновлень доступний нижче, а також ви можете переглянути різницю між 12.13.0 та 12.14.0 на GitHub. Наступні примітки безпосередньо з changelog:
# v12.14.0
- [12.x] Додана підтримка
useCurrentдля типів колонок date і year від @nicholasbrantley (#55619) - [12.x] Оновлено "Number::fileSize" для використання правильного префіксу та додано параметр префіксу від @Boy132 (#55678)
- [12.x] Оновлено PHPDoc для whereRaw для дозволу Expression в $sql від @mitoop (#55674)
- Скасовано "[12.x] Make Blueprint Resolver Statically" від @taylorotwell (#55690)
- [12.x] Додана підтримка віртуальних властивостей при серіалізації моделей від @beschoenen (#55691)
- [12.x] Виправлено поширення помилок у
Http::preventStrayRequestsпід час використанняHttp::poolвід @LeTamanoir (#55689) - [12.x] Виправлено неправильне використання генеративних типів у Schema\Builder від @taka-oyama (#55687)
- [12.x] Додано опцію для вимкнення MySQL ssl під час відновлення або об'єднання міграцій від @andersonls (#55683)
- [12.x] Додані методи
exceptтаexceptHiddenдо класуContextвід @xurshudyan (#55692) - [12.x] Утиліта
currentlyResolvingв контейнері від @jrseliga (#55684) - [12.x] Тест для
currentlyResolvingконтейнера від @jrseliga (#55694) - [12.x] Виправлено обробку значень за замовчуванням для параметрів маршруту з полем зв'язку від @stancl (#55697)
- Переміщено Timeout для автентифікації та додано до скидань паролів від @valorin (#55701)
- [12.x] Оптимізація BladeCompiler від @rzv-me (#55703)
- [12.x] Підтримка ітерованих об'єктів для шляхів виявлення подій від @calebdw (#55699)
- [12.x] Типи: AuthorizesRequests::resourceAbilityMap від @liamduckett (#55706)
- [12.x] Додано гнучку підтримку до кешу з запам'ятовуванням від @timacdonald (#55709)
- [12.x] Введено Arr::from() від @daniser (#55715)
- [12.x] Виправлено неправильний
morphClassдля зв'язків morph to many уgetCurrentlyAttachedPivotsвід @amir9480 (#55721) - [12.x] Поліпшено типізацію класів Http від @cosmastech (#54783)
- Додано deleteWhen для middleware завдань з обмеженням від @moshe-autoleadstar (#55718)