JetBrains випустила PhpStorm 2026.3 - третє велике оновлення IDE цього року. Для PHP-розробників у ньому головне - підтримка PHP 8.6, яка з'явилася за кілька тижнів до виходу самої мови, і нові Laravel-інспекції, що ловлять помилки, які інакше виринають лише в рантаймі.
Сама JetBrains ставить на перше місце Air - робочий простір для coding-агентів. Про нього ми вже писали окремо, тому тут зосередимося на тому, що зміниться у звичайній роботі з PHP і Laravel. Що було в попередньому випуску, дивіться в огляді PhpStorm 2026.2.
PHP 8.6 до виходу мови
PHP 8.6 виходить 19 листопада, а PhpStorm уже вміє перевіряти код на цій версії. Рівень мови задається в налаштуваннях (PHP | PHP language level) або береться з вимоги php у composer.json. Що змінюється на кожному боці переходу, ми розбирали в огляді PHP 8.6, тут - лише те, як допомагає IDE:
- Міграція. Нова інспекція Deprecated since PHP 8.6 показує конструктори й деструктори, які повертають значення або використовують
yield. Quick-fix Remove return value прибирає повернене значення, але зберігає ранній вихід. Виклики застарілих функцій mb_ereg* теж підсвічуються.
- Новий код. Автодоповнення й вивід типів для нових функцій, класів і API мови.
- Сумісність зі старими версіями. Якщо проєкт націлено на PHP 8.5 або старішу, PhpStorm позначає синтаксис, доступний лише у 8.6, і виклики нових функцій на кшталт
clamp(). Для readonly-властивості зі значенням за замовчуванням є quick-fix Initialize property in constructor, який переносить ініціалізацію в конструктор.
Останнє особливо корисне для пакетів, що підтримують кілька версій PHP: локально у вас може стояти 8.6, а мінімальна версія в composer.json лишається нижчою - і IDE перевірятиме код саме за нею.
Три Laravel-інспекції
Усі три ловлять один тип помилки: код, який виглядає правильно в diff, а падає чи тихо поводиться не так уже під час виконання.
Unknown config keys - ключ, якого немає в конфігурації. Друкарська помилка в config() нічого не зламає одразу: виклик просто поверне null.
// у config/services.php ключ називається 'stripe'
$key = config('services.strpie.key');
Missing resource route methods - resource-маршрут, для якого в контролері бракує методів. Route::resource() реєструє маршрути для всіх стандартних дій, і якщо, скажімо, destroy у контролері немає, ви дізнаєтеся про це, коли хтось натисне «Видалити».
// PhotoController має лише index, show і store
Route::resource('photos', PhotoController::class);
Unknown Livewire component method - виклик методу, якого немає в Livewire-компоненті.
{{-- у компоненті метод називається save() --}}
<button wire:click="submit">Зберегти</button>
Ще одна новинка в Laravel tool window - вкладка Processes. Вона збирає в одному місці довготривалі процеси: dev-сервер, воркери черги, npm run dev. Їх можна запускати, зупиняти, перезапускати й дивитися їхній вивід, не перемикаючись між вкладками термінала.
Точніший вивід типів
Покращення стосуються коду з generic-шаблонами, callable і array shapes. PhpStorm 2026.3 підтримує:
- тег
@param-closure-this, який задає тип $this усередині переданого замикання;
- типи параметрів із callable-сигнатур у PHPDoc;
- шаблони в оголошеннях
@method;
- типи, що повертають generic-фабрики з аргументом
class-string<T>;
- масиви, зібрані через spread-оператор.
Для Laravel-проєктів це передусім менше хибних «невідомих методів» у коді із замиканнями, прив'язаними до іншого об'єкта, і фабриками, що приймають class-string<T>, і точніше автодоповнення там, де тип раніше губився.
Git worktrees без повторного налаштування
PhpStorm тепер копіює локальну конфігурацію проєкту в новий Git worktree, включно з конфігураціями запуску та іншими налаштуваннями з .idea. Раніше їх доводилося або комітити, або налаштовувати заново для кожного worktree.
Файли, які не потрапляють у git (наприклад, .env), можна перелічити в .worktreeinclude - IDE скопіює їх теж. А ще можна задати скрипт, що запускається при створенні worktree: для Laravel-проєкту це природне місце для composer install і npm install.
Pull request з GitHub або merge request з GitLab тепер можна відкрити в окремому worktree: поточна гілка й незакомічені зміни лишаються на місці, і робити git stash перед code review не потрібно. GitLab-акаунт підключається через OAuth у браузері, без персонального токена.
Термінал, фризи, WSL і remote dev
- Термінал на libghostty. Вбудований термінал JetBrains IDE перейшов з JediTerm на libghostty - бібліотеку, на якій працює Ghostty. Обіцяють кращу підтримку гарячих клавіш, емодзі й стилів у TUI-застосунках, зокрема в Claude Code, Codex і Junie. Вкладку термінала можна винести в область редактора (Alt+Shift+Enter). Якщо щось поводиться дивно, старий емулятор повертає ключ реєстру
terminal.use.ghostty.emulator.
- Фризи. JetBrains винесла блокувальні операції з UI-потоку і виправила фризи, на які скаржилися користувачі: у Composer-проєктах, з'єднаннях розгортання, налагодженні Twig і виводі типів.
- WSL. IDE сама знаходить усі PHP-бінарники в дистрибутиві WSL, Xdebug працює з WSL-інтерпретатором без додаткового налаштування мережі.
- Remote dev. Підключення до віддаленої машини через SSH прямо з IDE, легкий режим, що відкриває проєкт ще до завантаження віддаленої IDE, і нативний OpenSSH з підтримкою ProxyJump та апаратних ключів на кшталт YubiKey.
Зверніть увагу: з 2026.3 PhpStorm автоматично надсилає звіти про помилки й фризи до JetBrains. За словами компанії, шляхи до файлів, URL та імена користувачів вирізаються до відправлення. Вимкнути це можна в Settings | Appearance & Behavior | System Settings | Data Sharing.
Air і MCP-сервер
Air у PhpStorm працює з Claude Agent, Codex, Gemini, GitHub Copilot, Junie, OpenCode та іншими ACP-сумісними агентами, з вашими наявними підписками, а конфігурація Junie Lite доступна безкоштовно з JetBrains Account. Для PHP-коду важливіше інше: нові Laravel-інспекції й перевірки PHP 8.6 доступні через MCP-сервер IDE, тож агент може запустити ті самі інспекції, що бачите ви, і застосувати quick-fix. Вбудована навичка php-runtime-tools дає агенту інтерпретатор проєкту, щоб він не брав системний php з іншою версією чи без потрібних розширень.
Чи варто оновлюватися
Якщо ви плануєте переходити на PHP 8.6, так: це версія, з якою можна безпечно ввімкнути новий language level і пройтися інспекціями міграції ще до виходу мови. Перед цим перевірте вимогу php у composer.json - саме за нею IDE вирішує, що підсвічувати як несумісне.
Laravel-інспекції варто прогнати по всьому проєкту (Code | Inspect Code): друкарські помилки в ключах конфігу та забуті методи resource-контролерів зазвичай живуть роками саме тому, що нічого не падає одразу. А якщо вкладка термінала після оновлення поводиться не так, як раніше, пам'ятайте про ключ реєстру для повернення JediTerm.