Команда Laravel представила версію 12.40.0. У цьому релізі з'явилися нові хелпери для роботи з часом, можливість планувати завдання на конкретні дні місяця, функція призупинення черг та інші корисні оновлення.
# Хелпери для роботи з часом
Тейлор Отвелл додав нові допоміжні функції до простору імен Illuminate\Support та розширив можливості класу Carbon:
use Illuminate\Support\Carbon;
// Методи plus та minus тепер підтримують іменовані аргументи:
// роки, місяці, тижні, дні, години, хвилини, секунди та мікросекунди.
Carbon::now()->plus(years: 1, days: 5);
Carbon::now()->minus(weeks: 4);
Також додано глобальні хелпери, які повертають екземпляр CarbonInterval:
use function Illuminate\Support\{seconds, minutes, hours, days, years};
seconds(5);
minutes(5);
hours(1);
days(30);
years(1);
/*
Carbon\CarbonInterval {#1277
interval: + 1y,
}
*/
Ось кілька прикладів використання нових методів Carbon та функцій-хелперів:
use function Illuminate\Support\minutes;
Cache::put('name', 'Taylor', minutes(5));
Invitation::create([
'expires_at' => now()->plus(weeks: 1),
]);
# Планування завдань на конкретні дні
Юсеф Кадах реалізував метод daysOfMonth(), який дозволяє запускати заплановані завдання у визначені дні місяця:
// Передача аргументів через кому
$schedule->command('generate-reports')
->daysOfMonth(1, 10, 20);
// Використання масиву
$schedule->command('generate-reports')
->daysOfMonth([1, 10, 20]);
# Правило валідації кодування
Джеймі Йорк додав правило валідації encoding. Воно перевіряє вміст файлу на відповідність заданому кодуванню:
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rules\File;
Validator::validate($input, [
'attachment' => [
'required',
File::types(['csv'])->encoding('utf-8'),
],
]);
# Призупинення та відновлення черг
Тепер роботу черг можна ставити на паузу та відновлювати за допомогою нових команд. Аргумент команди містить назву з'єднання та черги (наприклад, database:default):
php artisan queue:pause database:default
php artisan queue:continue database:default
Детальніше про роботу з воркерами черг читайте у документації.
# Нотатки до релізу
Повний список нових функцій та оновлень доступний у порівнянні версій 12.39.0 та 12.40.0 на GitHub. Нижче наведено офіційний changelog:
# v12.40.0
- [12.x] Покращено тип повернення для
Str::replace()(@axlon) - [12.x] Виправлено депрекації PHP 8.5 у
SupportArrTest(@jnoordsij) - Додано метод
daysOfMonth()для планування завдань (@yousefkadah) - [12.x] Додано правило валідації
encodingдля завантажених файлів (@ziadoz) - [12.x] Дозволено властивостям
CachedStateприймати null (@jackbayliss) - [12.x] Виправлено тест кодування (@jackbayliss)
- [12.x] Виправлено
MemoizedStoreпри роботі з Redis Cluster (@vadimonus) - [12.x] Оновлено повідомлення валідації для кодування (@jackbayliss)
- [12.x] Використання
scopedIfуCacheManager::memo()(@angelej) - [12.x] Виправлено
RedisTaggedCache::flushStaleз PhpRedisClusterConnection (@vadimonus) - [12.x] Додано підтримку параметрів за замовчуванням у метод
Request::fluent()(@michaelnabil230) - [12.x] Виправлено невідповідність Content-ID вбудованих зображень у клонованих листах (@yinheli)
- [12.x] Додано
PredisClusterConnection::keys()(@vadimonus) - [12.x] Сумісність із PHP 8.5 (@crynobone)
- [12.x] Запобігання від'ємним значенням у
RateLimiter(@Button99) - [12.x] Оновлено
RequestException@report()для повернення false (@cosmastech) - Додано хелпери часу (@taylorotwell)
- Реалізовано паузу/відновлення черг (@yousefkadah)
- [12.x] Виправлено
RedisTaggedCache::flushValuesз PredisClusterConnection (@vadimonus) - [12.x] Покращено тайпхінти для
QueriesRelationships(@CasEbb) - [12.x] Виправлено нестабільний тест (@cosmastech)
- [12.x] Оптимізовано
AbstractRouteCollection@toSymfonyRouteCollection()(@cosmastech) - [12.x] Оптимізовано
AbstractRouteCollection@matchAgainstRoute()(@cosmastech) - [12.x] Перенесено інтеграційні тести Redis (@vadimonus)
- [12.x] Виправлено некоректний результат
MemoizedStore::manyз числовими ключами (@vadimonus) - [12.x] Додано
testWrapEdgeCasesдляStr::wrap(@miladev95) - [12.x] Додано валідацію параметрів у метод
Collection::sliding()(@Button99) - [12.x] Оновлено тип повернення методу
path(завжди non-null string) (@IsmailBourbie) - Додано підтримку Google Antigravity IDE у
ResolvesDumpSource.php(@yeasherarafath) - [12.x] Очищення логіки призупинення черг (@cosmastech)
- [12.x] Спрощено логіку
ParsesQueue@parseQueue(@rodrigopedra) - [12.x] Покращено тайпхінти для lazy loading violation callables (@cosmastech)
- [12.x] Виправлено інвалідацію кешу заголовка Accept (@faisuc)
- [12.x] Виправлено нестабільні тести в
CacheArrayStoreтаArraySessionHandler(@sumaiazaman)