Цього тижня команда Laravel випустила версію v11.38, яка включає нове правило валідації Email
, можливість отримати об'єкт запиту або його значення у вигляді масиву, метод finally()
для конвеєра та багато іншого.
Сандер Мюллер додав нове правило валідації Email
, яке забезпечує аналогічний досвід, як правила для паролів і файлів.
// До
$request->validate([
'email' => ['required', 'string', 'email', 'strict', 'dns'],
]);
// Після
$request->validate([
'email' => ['required', 'string', Rule::email()->strict()->dns()],
]);
Деталі можна знайти у Pull Request #54067.
Стів Бауман додав метод array()
, який дозволяє перетворити значення з об'єкта запиту або екземпляра Fluent:
$fluent = new Fluent(['email' => 'test@example.com']);
$fluent->array('email'); // ['test@example.com']
// ?email=test@example.com
$request->array('email'); // ['test@example.com']
Деталі можна знайти у Pull Request #54177.
Нуну Мадуро запропонував метод finally()
, який надає змогу вказати зворотний виклик, що виконується незалежно від результату конвеєра.
// До
try {
$result = Pipeline::send($deployment)
->through([PipeOne::class, PipeTwo::class]) // один з конвеєрів не викликає $next або викидає виключення...
->then(fn () => $deployment->deploy());
} finally {
// очищення...
}
// Після
$result = Pipeline::send($deployment)
->through([PipeOne::class, PipeTwo::class]) // один з конвеєрів не викликає $next або викидає виключення...
->finally(fn () => /** очищення */)
->then(fn () => $deployment->deploy());
Деталі можна знайти у Pull Request #54110.
Джон Еріксон запропонував опцію --except
для пропуску команд під час виконання оптимізацій. Цей новий параметр дозволяє вказати часткові ключі та перелік команд для виключення через кому:
# Пропустити за назвою команди
php artisan optimize --except route:cache
# Пропустити за ключем
php artisan optimize --except route
# Пропустити перелік ключів або назв команд через кому
php artisan optimize:clear --except route,view:cache
@miccehedin додав опцію --action
для знаходження маршрутів з використанням конкретного рядка дії:
route:list --action=TestController
Детальний список нових функцій та оновлень ви можете знайти нижче, а також порівняння версій 11.37.0 та 11.38.0 на GitHub. Наступні примітки взято безпосередньо з changelog:
RefreshDatabase
від @SjorsO в https://github.com/laravel/framework/pull/54075HasUniqueStringIds
від @hafezdivandari в https://github.com/laravel/framework/pull/54096finally
до допоміжного конвеєра від @nunomaduro в https://github.com/laravel/framework/pull/54110Eloquent/Builder
pluck від @MattBradleyDev в https://github.com/laravel/framework/pull/54130@mixin
у трейті SoftDeletes
від @nunomaduro в https://github.com/laravel/framework/pull/54140times()
від @browner12 в https://github.com/laravel/framework/pull/54141optimize
і optimize:clear
від @jonerickson в https://github.com/laravel/framework/pull/54070USE database
від @TheLevti в https://github.com/laravel/framework/pull/54132Email
від @SanderMuller в https://github.com/laravel/framework/pull/54067Dispatchable::newPendingDispatch()
від @cosmastech в https://github.com/laravel/framework/pull/54153FormRequest::array($key)
та Fluent::array($key)
від @stevebauman в https://github.com/laravel/framework/pull/54177HasRelationships
загальними від @SanderMuller в https://github.com/laravel/framework/pull/54174PendingDispatch@getJob()
від @cosmastech в https://github.com/laravel/framework/pull/54158