Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Що ми знаємо про Laravel 14
Новини 22 вересня 2026

Що ми знаємо про Laravel 14

Laravel 14 - наступний мажорний реліз фреймворку Laravel, який очікується у першому кварталі 2027 року. Цей реліз вимагатиме PHP 8.4 як мінімальну версію та слідуватиме стандартному циклу підтримки Laravel: виправлення помилок до третього кварталу 2028 року та оновлення безпеки до першого кварталу 2029 року.

Команда Laravel ще не оголосила офіційну дату релізу чи перелік функцій. Вся інформація нижче походить із гілки master репозиторію laravel/framework, де відбувається розробка Laravel 14, і будь-що може змінитися до релізу.

Нові можливості

Функції Laravel 14 додаватимуться до цього посту в міру їх оголошення. Більшість нових можливостей досі виходять у щотижневих мінорних релізах Laravel 13, а функції нижче чекають на Laravel 14, оскільки вони додають метод до контракту або змінюють сигнатуру.

Route::query()

#60655 від Vazha Aptsiauri додає підтримку маршрутизації для HTTP-методу QUERY - безпечного методу, який передає тіло запиту:

Route::query('/search', function () {
    return request()->input('filter');
});

Route::any() включає QUERY, а CSRF-middleware обробляє його як запит на читання, так само як GET, HEAD та OPTIONS.

Laravel 13.19 вже додав Http::query() до HTTP-клієнта разом із тестовими хелперами query() та queryJson().

$user->authorize()

Will Rowe додав метод authorize() до контракту та трейту Authorizable у #59708:

// Laravel 13
Gate::forUser($user)->authorize('viewAny', Post::class);
// Laravel 14
$user->authorize('viewAny', Post::class);

Він працює як $user->can(), але викидає AuthorizationException, коли перевірка не проходить.

Контекст для report()

Хелпер report() та метод report() обробника винятків приймають необов'язковий масив контексту, доданий Caleb White у #60767:

try {
    $order->charge();
} catch (Throwable $e) {
    report($e, ['order_id' => $order->id]);
}

Контракт ExceptionHandler змінюється на report(Throwable $e, array $context = []), тому власний обробник, який перевизначає report(), потребує новий параметр.

Storage::fake() для дисків на вимогу

Storage::fake('ondemand') перехоплює виклики Storage::build(), тож ви можете тестувати диски на вимогу з тими ж твердженнями, що й іменовані диски (#61378). PR надіслано до master, оскільки додаток може вже мати диск з назвою ondemand.

orWhereKey() та підзапити в whereKey()

Caleb White консолідував whereKey() та whereKeyNot() і додав orWhereKey() та orWhereKeyNot() у #61395. Другий PR, #61496, дозволяє всім чотирьом методам приймати підзапит.

Критичні зміни

Методи паузи черги приймають чергу першою

Laravel 13.25 додав можливість призупиняти всі черги, а методи для окремих черг на фасаді Queue вимагали з'єднання як перший аргумент. #61076 переміщує з'єднання в кінець і робить його типовим:

// Laravel 13
Queue::pause('redis', 'emails');
Queue::pauseFor('redis', 'emails', 60);
// Laravel 14
Queue::pause('emails');
Queue::pauseFor('emails', 60);
Queue::pause('emails', 'redis');

resume() та isPaused() також приймають чергу першою та необов'язкове з'єднання другим.

lazy() та chunk() більше не змінюють Builder

У Laravel 13 lazy() та chunk() змінюють query builder під час пагінації. Повторне використання того ж builder після цього повертає неправильний результат:

$query = User::query();
foreach ($query->lazy(2) as $user) {
    // ...
}
$query->count(); // 0 у Laravel 13

Jack Bayliss виправив обидва методи в #61411 та #61428, тож count() повертає повне число рядків у Laravel 14.

findOr() з масивом ID

Builder::findOr() ніколи не викликав callback, коли ви передавали масив ID. #61577 від Matthieu робить його відповідним findOrFail() та версіям findOr() для зв'язків:

User::findOr([1, 99], fn () => 'fallback');
// Laravel 13: колекція, що містить лише користувача 1
// Laravel 14: 'fallback'

Cache::has() та Cache::forget() з масивами

Docblock'и для has() та forget() приймають масиви вже чотири роки, але Cache::has(['a', 'b']) завжди повертав true, а Cache::forget(['a', 'b']) не видаляв ключі. #61466 від Jack Bayliss виправляє обидва методи. У Laravel 14 has() повертає true тільки коли кожен ключ існує:

Cache::put('foo', 'bar');
Cache::has(['foo', 'missing']);
// Laravel 13: true
// Laravel 14: false

Передача масиву до forget() видаляє кожен ключ, і він повертає true тільки коли кожен ключ було видалено:

Cache::forget(['foo', 'baz']);
// Laravel 13: ключі залишаються, і Redis-сховище видає
// попередження "Array to string conversion"
// Laravel 14: обидва ключі видаляються

MassPrunable включає м'яко видалені моделі

Трейт Prunable додає withTrashed() до запиту очищення, коли модель використовує м'яке видалення. MassPrunable не робив цього, і #61425 робить їх узгодженими. Візьмемо модель, що використовує обидва трейти:

use Illuminate\Database\Eloquent\MassPrunable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model
{
    use MassPrunable, SoftDeletes;

    public function prunable()
    {
        return static::where('created_at', '<=', now()->subMonth());
    }
}

У Laravel 13 model:prune примусово видаляє відповідні пости, які не є м'яко видаленими, а м'яко видалені пости залишаються в таблиці. У Laravel 14 він примусово видаляє кожен відповідний пост, включно з м'яко видаленими.

Якщо ви використовуєте MassPrunable на моделі з м'яким видаленням, перевірте, що ваш запит prunable() досі вибирає очікувані рядки. Щоб зберегти поведінку Laravel 13, додайте withoutTrashed() до запиту.

Вимоги до версії PHP

Laravel 14 вимагатиме PHP 8.4 як мінімальну версію, що є підвищенням від мінімальної версії PHP 8.3 у Laravel 13. У #59104 Laravel 14 підвищує мінімальну версію до PHP 8.4, оскільки Symfony 8 вимагає PHP 8.4 як мінімум.

Laravel також працюватиме з новішими версіями PHP. Дивіться Що нового в PHP 8.6 для решти інформації про цей реліз.

Інші зміни залежностей у master, які ймовірно з'являться в Laravel 14:

  • ably/ably-php переходить на версію, що використовує протокол Ably 2.0 (#60860)
  • orchestra/testbench-core переходить на ^12.0
  • Підтримуються PHPUnit 11.5, 12.5 та 13

Часова лінія підтримки

Політика підтримки Laravel передбачає щорічний вихід мажорних релізів приблизно в першому кварталі. Відповідно до цієї політики, Laravel 14 отримуватиме виправлення помилок до третього кварталу 2028 року та оновлення безпеки до першого кварталу 2029 року:

Версія PHP (*) Реліз Виправлення помилок до Оновлення безпеки до
11 8.2 - 8.4 12 березня 2024 3 вересня 2025 12 березня 2026
12 8.2 - 8.5 24 лютого 2025 13 серпня 2026 24 лютого 2027
13 8.3 - 8.5 17 березня 2026 Q3 2027 17 березня 2028
14 8.4+ Q1 2027 Q3 2028 Q1 2029

Примітка: Офіційна документація ще не містить Laravel 14, офіційні деталі TBD.

Laravel 13, випущений 17 березня 2026 року, продовжуватиме отримувати:

  • Виправлення помилок до третього кварталу 2027 року
  • Оновлення безпеки до 17 березня 2028 року

Laravel 12 більше не отримує виправлення помилок, а його оновлення безпеки закінчуються 24 лютого 2027 року.

Оновлення до Laravel 14

Якщо ви хочете автоматизувати оновлення, коли Laravel 14 буде випущено, перевірте Laravel Shift. Shift відкриває pull request з атомарними комітами для вашого перегляду.

4

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Difflock
Новини 22 вересня 2026

Difflock: Лінтинг Laravel-міграцій та перевірка схеми бази даних

Difflock - Laravel-пакет для аналізу міграцій перед їх застосуванням. Він перевіряє міграції на деструктивні операції, зміни колонок, індекси та зовнішні ключі, порівнює схеми баз даних та блокує ризиковані зміни у CI/CD.

2
Fresh Package
Новини 19 вересня 2026

Fresh Package: новий скелет для розробки Laravel-пакетів з Testbench, CI та інтеграцією Boost

Fresh Package від Mazen Touati - це сучасний скелет для створення Laravel-пакетів, який включає тестове середовище, статичний аналіз, CI/CD, workbench-додаток та шаблони навичок для AI-агентів. Підтримує як backend-only, так і full-stack пакети.

6

Вакансії за темою

Nova Digital Нова
Сьогодні

Lead Backend PHP Developer

Lead Backend PHP Developer для R&D відділу. Розробка PoC та MVP, технічне лідерство команди, інтеграція нових рішень з існуючими системами, проектування архітектури для масштабування. Потрібні 5+ років досвіду PHP, вмотивованість до AI-рішень, знання Laravel/Symfony, PostgreSQL, RabbitMQ, Docker, Kubernetes, мікросервісної архітектури.

Readdle Нова
Вчора

Senior Backend Engineer (PHP, Symfony) — Fluix Team

Старший бекенд-інженер для розробки та підтримки комплексних сервісів платформи автоматизації процесів. Основний стек: PHP, Symfony, AWS (EC2, S3, SQS, Lambda, DynamoDB, RDS), Kubernetes. Вимоги: 5+ років досвіду, end-to-end власність над функціями, проектування API та сервісів, знання DDD та security-стандартів, дебаг та профайлінг, CI/CD, вміння працювати з AI-інструментами. Участь у production-ротаціях, розповсюдження практик у команді.

PHP Software Engineer

Розробник PHP для розробки та оптимізації high-load backend-сервісів із використанням Laravel, Apache Kafka, RabbitMQ і Redis. Вимоги: 5+ років досвіду в backend-розробці в senior/lead ролі, експертне знання Laravel або Symfony, обов'язковий досвід із Kafka, Redis, мікросервісною архітектурою, Docker/Kubernetes. Необхідна базова підготовка у high-load системах та real-time обробці.

Пакети за темою

Rector

rector/rector

Автоматичний рефакторинг і оновлення коду: піднімає синтаксис до нової версії PHP, застосовує набори правил для Laravel і виправляє застарілі API масово, а не вручну по файлах.

10,405 2.6.3 1