Настройка Intelephense в среде разработки VS Code для PHP
Обзор настройки Intelephense в VS Code для PHP
Intelephense - это мощное расширение для VS Code, которое предоставляет автодополнение, диагностику, подсказки типов и навигацию для PHP. Основной способ его настройки - через глобальный или рабочий файл settings.json.
Как установить и выполнить базовую настройку Intelephense?
Расширение устанавливается из маркетплейса VS Code (Intelephense от Ben Mewburn). После установки откроется файл .vscode/settings.json (для рабочего пространства) или settings.json пользователя. Пример минимальной конфигурации:
{
"intelephense.files.maxSize": 5000000,
"intelephense.environment.includePaths": [
"./vendor"
],
"intelephense.environment.phpVersion": "8.2.0"
}Vs code php intelephense (настройка интеллефенса в vs code для php)
Здесь указывается максимальный размер файла (5 МБ), путь к папке vendor для автозагрузки Composer, и версия PHP. После сохранения Intelephense перезагрузит индексацию.
Типичные ошибки:
- Расширение не реагирует - требуется перезагрузить окно VS Code (Developer: Reload Window).
- Не видит классы из vendor - проверьте путь intelephense.environment.includePaths.
- Высокое потребление памяти - уменьшите intelephense.files.maxSize или исключите директории.
Как настроить Intelephense для работы с конкретной версией PHP?
Цель: точная диагностика типов, устаревших функций, синтаксиса под целевую версию. Настройка в settings.json:
"intelephense.environment.phpVersion": "8.1.12"Как добавить поддержку глобальных функций и констант из Composer пакетов?
Цель: автодополнение для функций типа dd() из Laravel или dump() из Symfony. Добавьте пути к vendor или отдельным файлам stubs:
"intelephense.environment.includePaths": [
"./vendor",
"./vendor/laravel/framework/src/Illuminate/Support/helpers.php"
]Как отключить строгую проверку типов для определённых файлов?
Цель: избежать предупреждений в legacy-коде или файлах с динамической типизацией. Используйте intelephense.diagnostics с настройкой для отдельных путей через files.exclude или языковые настройки. Например, исключить папку old:
{
"intelephense.diagnostics.enable": true,
"files.exclude": {
"**/old/**": true
}
}Как использовать Intelephense с лицензионным ключом?
Цель: активировать Pro-функции (дополнительные проверки, типы для встроенных функций). Ключ вводится в settings.json:
"intelephense.licenseKey": "ваш-ключ-полученный-после-покупки"Как улучшить автозавершение для методов и свойств?
Цель: более точные подсказки и автоматическое добавление параметров. Настройки:
{
"intelephense.completion.triggerParameterHints": true,
"intelephense.format.enable": false
}Отключение форматирования уменьшает нагрузку. Включение подсказок параметров показывает сигнатуру метода.
Как добавить поддержку фреймворков (Laravel, Symfony)?
Цель: автодополнение фасадов, глобальных функций, макросов. Используйте stubs - файлы, описывающие классы фреймворка. Подключение:
"intelephense.stubs": [
"laravel",
"symfony"
]После установки перезагрузите окно. Stubs автоматически загружаются из расширения (доступны в Pro-версии или вручную как npm-пакет).
Как решить проблемы с медленной работой Intelephense?
Цель: уменьшить время индексации и потребление ОЗУ. Настройки:
{
"intelephense.files.maxSize": 1000000,
"intelephense.environment.includePaths": ["./src"],
"intelephense.diagnostics.enable": false
}Исключите большие бинарные файлы и папки node_modules, vendor (если не нужны).
Расширенные примеры настройки Intelephense
Пример 1: Подключение stubs для Laravel с помощью includePaths
Предположим, проект использует Laravel 10 и установлен пакет laravel-ide-helper. После генерации helper-файла _ide_helper.php добавьте его в настройки:
"intelephense.environment.includePaths": [
"./_ide_helper.php",
"./vendor/laravel/framework/src/Illuminate/Support/helpers.php"
]Результат: теперь автодополнение работает для фасадов (Route::get(), Cache::remember()).
Пример 2: Настройка нескольких версий PHP в одном workspace
В проекте есть две папки: app/php7 и app/php8. Разные настройки для папок задаются через settings.json с помощью [path]:
{
"[php7]": {
"intelephense.environment.phpVersion": "7.4.33"
},
"[php8]": {
"intelephense.environment.phpVersion": "8.2.0"
}
}Результат: в каждой папке Intelephense применяет свою версию PHP.
Пример 3: Расширенная диагностика с пользовательскими типами
Используйте PHPDoc-аннотации для указания типов, которые Intelephense распознаёт:
/** @param array $data */
function process(array $data): void {}
$result = process(["key" => 42]); // подсказка: array Результат: при вводе $data внутри функции Intelephense покажет тип array
Пример 4: Исключение vendor из индексации при сохранении автодополнения
Большой vendor замедляет индексацию. Альтернатива - исключить папку, но явно указать отдельные файлы:
{
"files.exclude": {
"**/vendor/**": true
},
"intelephense.environment.includePaths": [
"./vendor/autoload.php",
"./vendor/composer/InstalledVersions.php"
]
}Результат: Intelephense не индексирует весь vendor, но получает основные классы через autoload.php.
Пример 5: Использование workspace settings для разных веток проекта
Создайте файл .vscode/settings.json в корне проекта и настройте в нём конфигурацию для конкретной ветки (через условные настройки не поддерживаются, но можно менять файл вручную). Пример:
{
"intelephense.files.maxSize": 2000000,
"intelephense.diagnostics.undefinedMethods": "warning"
}Здесь уровень неопределённых методов меняется с ошибки на предупреждение.