Настройка Intelephense в среде разработки VS Code для PHP

Раздел: Настройка среды разработки 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"
Если версия указана неверно, Intelephense может выдавать ложные ошибки (например, для match-выражений в PHP 8.0 vs 8.1).

Как добавить поддержку глобальных функций и констант из Composer пакетов?

Цель: автодополнение для функций типа dd() из Laravel или dump() из Symfony. Добавьте пути к vendor или отдельным файлам stubs:

"intelephense.environment.includePaths": [
    "./vendor",
    "./vendor/laravel/framework/src/Illuminate/Support/helpers.php"
]
Если stubs не загружаются, убедитесь, что файлы физически существуют и не превышают intelephense.files.maxSize.

Как отключить строгую проверку типов для определённых файлов?

Цель: избежать предупреждений в 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
}

Отключение форматирования уменьшает нагрузку. Включение подсказок параметров показывает сигнатуру метода.

Если подсказки пропадают, проверьте наличие PHPDoc в коде - Intelephense опирается на аннотации.

Как добавить поддержку фреймворков (Laravel, Symfony)?

Цель: автодополнение фасадов, глобальных функций, макросов. Используйте stubs - файлы, описывающие классы фреймворка. Подключение:

"intelephense.stubs": [
    "laravel",
    "symfony"
]

После установки перезагрузите окно. Stubs автоматически загружаются из расширения (доступны в Pro-версии или вручную как npm-пакет).

Бесплатная версия Intelephense не содержит stubs для фреймворков. Для Laravel установите laravel-ide-helper и укажите includePaths.

Как решить проблемы с медленной работой 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"
}

Здесь уровень неопределённых методов меняется с ошибки на предупреждение.

Настройка интеллефенса в VS Code для PHP - comments

En
Vs code php intelephense (php)