Цього тижня команда Laravel випустила версію 11.2, яка включає помічник підтримки fluent(), помічник context(), покращену обробку відсутньої бази даних під час migrate
операції та багато іншого.
Fluent Helper
Філо Херманс (Philo Hermans) вніс допоміжну fluent()
функцію при роботі з багатовимірними масивами. Клас Fluent
вже досить давно знаходиться у фреймворку Laravel; однак цей PR вводить допоміжний метод зручності для створення екземпляра вільного об'єкта:
$data = [
'user' => [
'name' => 'Philo',
'address' => [
'city' => 'Amsterdam',
'country' => 'Netherlands',
]
],
'posts' => [
[
'title' => 'Post 1',
],
[
'title' => 'Post 2',
]
]
];
collect($data)->get('user');
fluent($data)->user;
collect($data)->get('user')['name'];
fluent($data)->get('user.name');
collect(collect($data)->get('posts'))->pluck('title');
fluent($data)->collect('posts')->pluck('title');
json_encode(collect($data)->get('user')['address']);
fluent($data)->scope('user.address')->toJson();
Помічник контекстуМайкл Набіль (Michael Nabil
) вніс функцію зручного context()
помічника для керування контекстом. Залежно від переданих аргументів, ви можете або додати до контексту, або отримати контекстний об'єкт, або отримати його (з необов'язковим користувацьким типовим значенням):
// Add user information to the context
context(['user' => auth()->user()]);
// Retrieve the context object
$context = context();
// Retrieve user information from the context
$user = context('user');
// Optional custom default value if not found.
$some_key = context('key_that_does_not_exist', false);
Значення за замовчуванням для геттерів контексту Майкл
Набіль вніс підтримку значення за замовчуванням для геттерів контексту:
// Before: Returns null if not found
Context::get('is_user');
Context::getHidden('is_user');
// After: Returns `false` if not found
Context::get('is_user', false); // false
Context::getHidden('is_user', false); // false
Context::get('is_user'); // null
Методи
затвердження тесту ланцюжка завданьГюнтер Дебрауер assertHasChain()
та assertDoesntHaveChain()
методи:
public function test_job_chains_foo_bar_job(): void
{
$job = new TestJob();
$job->handle();
$job->assertHasChain([
new FooBarJob();
]);
// $job->assertDoesntHaveChain();
}
Краща обробка
створення бази даних/стиранняDries Vints сприяв кращій обробці помилок бази даних (#50836) під час запускуmigrate
, коли база даних ще не створена, а також оновив команду migrate:fresh
для спрощення процесу, коли бази даних не існує #50838:
Якщо
migrate:fresh
команда викликається, коли ще не створено жодної бази даних, вона зазнає невдачі при спробі стерти базу даних. Цей PR виправляє це, спочатку перевіряючи, чи існує таблиця міграції, а якщо ні, негайно переходьте до команди migrate, пропустивши команду db:wipe. Це викличе потік команд migrate і згодом досягне точки, коли команда попросить користувача створити базу даних.У поєднанні з #50836 це запропонує більш безперебійний досвід для людей, які намагаються встановити Jetstream через інсталятор Laravel і вирішують не створювати базу даних.
Наведений вище опис взято з Запиту на Пул #50838.
Обрізання рядків видаляє невидимі символи
Дасун Таранга вніс оновлення проміжного програмного забезпечення фреймворкуTrimStrings
, де невидимі символи не обрізаються під час HTTP-запиту, що може спричинити проблеми під час надсилання форм. Дивіться Запит на Пул #50832 для подробиць.
Примітки
до випуску Ви можете переглянути повний список нових функцій та оновлень нижче, а також різницю між версіями 11.1.0 та 11.2.0 на GitHub. Наступні нотатки щодо випуску взято безпосередньо з журналу змін:
v11.2.0
- [11.x] Виправлено: оновлення
[@param](https://github.com/param)
в якомусь блоці doc по @saMahmoudzadeh в https://github.com/laravel/framework/pull/50827 - [11.x] Виправлено: оновлено @return в деяких блоках doc на @saMahmoudzadeh в https://github.com/laravel/framework/pull/50826
- [11.x] Виправлено отримання створених стовпчиків у застарілій версії PostgreSQL за допомогою @hafezdivandari у https://github.com/laravel/framework/pull/50834
- [11.x] Обрізання невидимих символів за @dasundev у https://github.com/laravel/framework/pull/50832
- [11.x] Додайте значення за замовчуванням для
get
таgetHidden
увімкненоContext
@michaelnabil230 у https://github.com/laravel/framework/pull/50824 - [11.x] Покращено
serve
командування Artisan за @nunomaduro у https://github.com/laravel/framework/pull/50821 - [11.x] Повторюйте паролі користувачів під час одноразового входу за допомогою @axlon у https://github.com/laravel/framework/pull/50843
- [11.x] Не витирати базу даних, якщо її не існує @driesvints у https://github.com/laravel/framework/pull/50838
- [11.x] Краща обробка помилок створення бази даних за допомогою @driesvints у https://github.com/laravel/framework/pull/50836
- [11.x] Використовуйте ім'я схеми за замовчуванням у SQL Server за @hafezdivandari у https://github.com/laravel/framework/pull/50855
- Правильна типізація для визначень стовпців баз даних startedAs та virtualAs за @ollieread у https://github.com/laravel/framework/pull/50851
- Уможливлено передавання виразу запиту як стовпчика у зв'язку «Багато-до-багатьох» за @plumthedev у https://github.com/laravel/framework/pull/50849
- [11.x] Виправлення
Middleware::trustHosts(subdomains: true)
за @axlon в https://github.com/laravel/framework/pull/50877 - [11.x] Змінено блоки doc для getGateArguments за допомогою @saMahmoudzadeh у https://github.com/laravel/framework/pull/50874
- [11.x] Додано
[@throws](https://github.com/throws)
до блоку doc для методу resolve за @saMahmoudzadeh у https://github.com/laravel/framework/pull/50873 - [11.x] Способи обрізки по @patrickomeara в https://github.com/laravel/framework/pull/50822
- [11.x] Додайте помічника вільного володіння мовою за @PhiloNL у https://github.com/laravel/framework/pull/50848
- [11.x] Додано новий допоміжний засіб для контексту за @michaelnabil230 у https://github.com/laravel/framework/pull/50878
- [11.x]
assertChain
іassertNoChain
на посаді за @gdebrauwer в https://github.com/laravel/framework/pull/50858 - [11.x] Вилучено зайвий
getDefaultNamespace
метод у деяких класах (клас, інтерфейс та команди trait) за допомогою @saMahmoudzadeh у https://github.com/laravel/framework/pull/50880 - [11.x] Видалено зайву реалізацію ConnectorInterface у MariaDbConnector за допомогою @saMahmoudzadeh у https://github.com/laravel/framework/pull/50881
- [11.X] Виправлено: помилка при використанні
orderByRaw
в запиті перед використаннямcursorPaginate
@ngunyimacharia в https://github.com/laravel/framework/pull/50887