У Laravel 13.7.0 з’явилася підтримка Interruptible Jobs та нова директива для оптимізації шрифтів

Перекладено ШІ 0 Laravel News 30 квітня, 2026

Laravel 13.7.0 впроваджує нову директиву @fonts для Vite та розширені можливості для керування фоновими завданнями. Дізнайтеся, які ще вдосконалення отримали інструменти тестування та колекції у цьому релізі.

У Laravel v13.7.0 з’явився інтерфейс Interruptible для черг завдань, директива @fonts для оптимізації шрифтів у Vite, пакетна перевірка JSON-шляхів у тестах та підтримка перерахувань SortDirection у колекціях.

  • Завдання тепер можуть реагувати на сигнали воркера через інтерфейс Interruptible
  • Нова подія WorkerInterrupted для моніторингу
  • Директива @fonts та механізм оптимізації шрифтів у Vite
  • Пакетні перевірки JSON-шляхів у TestResponse
  • Підтримка SortDirection enum для колекцій та класу Arr
  • Підтримка Enum у методі keyBy() для LazyCollection
  • Різноманітні виправлення та покращення продуктивності

# Що нового

# Реакція завдань на сигнали воркера

Завдання в черзі тепер можуть реалізовувати інтерфейс Interruptible. Це дозволяє тривалим процесам коректно завершувати роботу або встановлювати прапор зупинки, коли воркер отримує сигнал (наприклад, SIGTERM):

use Illuminate\Contracts\Queue\Interruptible;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Queue\Queueable;
 
class ReportJob implements ShouldQueue, Interruptible
{
    use Queueable;
 
    protected bool $stop = false;
 
    public function handle(): void
    {
        while (! $this->stop) {
            // виконання роботи...
        }
    }
 
    public function interrupted(int $signal): void
    {
        $this->stop = true;
    }
}

PR: #59833

# Директива @fonts та оптимізація шрифтів у Vite

Цей реліз додає директиву Blade @fonts та метод Vite::fonts() для рендерингу посилань preload та інлайнових стилів. Функція використовує маніфести шрифтів від Vite і дозволяє вибірково завантажувати окремі сімейства.

Базове використання у шаблоні:

<!DOCTYPE html>
<html>
<head>
    @fonts
    @vite('resources/js/app.js')
</head>
<body>
    {{ $slot }}
</body>
</html>

Це автоматично додасть теги <link> для прелоаду та блок <style> з усіма правилами @font-face та CSS-змінними.

Ви також можете завантажувати лише конкретні шрифти:

{{-- Завантажити одне сімейство --}}
@fonts('sans')
 
{{-- Завантажити кілька сімейств --}}
@fonts(['sans', 'mono'])

PR: #59584

# Пакетна перевірка JSON-шляхів у TestResponse

Для тестування додано методи assertJsonPaths() та assertJsonMissingPaths(), що дозволяють перевіряти кілька значень JSON одночасно.

Раніше:

$response->assertJsonPath('data.id', 1)
         ->assertJsonPath('data.name', 'Taylor')
         ->assertJsonPath('meta.count', 3);

Зараз:

$response->assertJsonPaths([
    'data.id' => 1,
    'data.name' => 'Taylor',
    'meta.count' => 3,
]);

Метод assertJsonMissingPaths() працює аналогічно для перевірки відсутності ключів:

$response->assertJsonMissingPaths(['password', 'secret_token']);

PR: #59829

# Підтримка SortDirection Enum у колекціях

Колекції та клас Arr тепер підтримують перерахування SortDirection, що забезпечує кращу типізацію при сортуванні:

use SortDirection;
 
$sorted = $collection->sortBy('name', descending: SortDirection::Descending);

PR: #59859

# Подія WorkerInterrupted

Нова подія WorkerInterrupted спрацьовує, коли воркер отримує сигнал зупинки. Це корисно для моніторингу: можна логувати події або надсилати сповіщення, навіть якщо саме завдання не реалізує інтерфейс Interruptible.

PR: #59848

# Метод isLocked у класі Lock

У клас Lock додано метод isLocked() для швидкої перевірки статусу блокування.

PR: #59791

# Підтримка Enum у LazyCollection keyBy()

Метод LazyCollection::keyBy() тепер приймає BackedEnum, що відповідає поведінці звичайних Collection. Раніше передача enum викликала помилку при спробі перетворення в рядок.

PR: #59809

# Інші виправлення

Оновлення включає покращену роботу з enum у ConcurrencyManager, QueueManager, LogManager, SessionManager та RedisManager. Також додано уточнення в docblocks, виправлено типи та усунено баги, знайдені спільнотою.

Нотатки щодо оновлення

Критичних змін для типових застосунків немає. Подробиці по кожному PR доступні в журналі змін.

Посилання

Популярні

Інше, що варто прочитати

16 Оновлено 01 травня, 2026

Обробка геопросторових даних за допомогою Laravel Magellan

Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!

19 Оновлено 01 травня, 2026

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

14 Оновлено 01 травня, 2026

Claude Agent тепер інтегрований в AI Assistant для PhpStorm

Ви коли-небудь задумувалися, як полегшити свою роботу в Laravel? У нашій статті ми розглядаємо, як інтеграція Claude Code в PhpStorm може підвищити вашу продуктивність, спростивши процес написання коду та навчання нових розробників. Читайте далі, щоб дізнатися більше про переваги та функціональність цього потужного поєднання