Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Що ми знаємо про 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 з атомарними комітами для вашого перегляду.

18

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

Коментарі

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

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

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

Новини 09 листопада 2026

Laravel Herd 2.0: Herd Studio, workspaces і автоматичний dev-сервер

Herd 2.0 для macOS і Windows додав Herd Studio - панель у браузері для роботи з coding-агентами поруч із сайтом .test, ізольовані workspaces на окремих гілках і піддоменах та автоматичний запуск php artisan dev. Усе AI вимикається, а базовий Herd лишається безкоштовним.

Новини 09 листопада 2026

Вразливості в PHPUnit 13.4 і symfony/yaml: що оновити в Laravel-проєкті

PHPUnit 13.4.0-13.4.3 виконував код PHPT-тестів зі спільного каталогу /tmp/phpunit-phpt, який міг підмінити інший користувач машини. Виправлення - 13.4.4, а користувачам Pest 5 треба оновити сам Pest до 5.3.4. Заразом - нагадування про DoS у symfony/yaml, виправлений у 5.4.54, 6.4.45, 7.4.18 і 8.1.6.

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

JATAPP Нова
Вчора

Middle+ Full Stack Developer (Vue.js + PHP/Laravel)

Full Stack розробник у мультипродуктовий юніт: відповідатиме за бекенд на PHP (Laravel/Symfony) для мобільних застосунків і фронтенд веб-продуктів на Vue.js. Завдання включають розробку й підтримку API, інтеграцію third-party сервісів і черг (RabbitMQ), платіжних, маркетингових та аналітичних систем, а також відповідальність за релізи, моніторинг і стабільність продукту. Головні вимоги: комерційний досвід з PHP та Laravel або Symfony, досвід із Vue.js (або React з готовністю швидко освоїти Vue),

Full-Stack Developer (Laravel, React/Angular)

Розробник full-stack для розробки нових функцій і підтримки існуючого функціоналу в командах проєктів. Основний стек: Laravel і PHP (від 2 років), React або Angular (від 2 років комерційного досвіду), MySQL, REST API, JavaScript, HTML/CSS. Потрібні добре знання ООП, патернів проєктування, орієнтація на якість коду; бажаний досвід розподілених систем або високонавантажених проєктів.

Middle Backend Developer

Розробка та підтримка backend-сервісів: проєктування доменної моделі, бізнес-логіки й API, схеми даних і міграцій, налаштування CI/CD та участь у архітектурних рішеннях щодо взаємодії фронтенду й бекенду. Основний стек: Nest.js та PHP, реляційні БД, брокери повідомлень, RESTful API і WebSocket, Docker. Вимоги: від 2 років досвіду, розуміння мікросервісної архітектури, досвід роботи з Git.

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

Rector

rector/rector

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

10,405 2.6.3 2

Kalimera

welldigit/kalimera

Interactive installer that scaffolds Laravel applications the Well Digit way.

v1.0.0 16