KPHPStorm — установка и настройка

1. Установка в PHPStorm:

JetBrains больше не может предоставлять услуги VK как компании из РФ, поэтому все наши плагины распространяются не через официальный Marketplace, а через наш собственный.

SettingsPlugins⚙️Manage plugin repositories:

screen-manage-custom

Добавляем адрес https://idea-plugins.kphp.dev

screen-manage-custom-add

Закрываем окно настроек через ОК и открываем настройки заново.

Теперь он должен находиться по запросу (иногда без иконки):

screen-manage-search-kphpstorm

Установить плагин, вылезет Restart IDE, согласиться.

2. После рестарта, если открыт KPHP проект, плагин предложит автонастройку:

Нажать, подождать секунду, вылезет окошко, нажать Invalidate and Restart:

3. После рестарта IDE заново всё переиндексирует — только типы будут парситься уже по-новому.


Что конкретно делает “автонастройка”?

  • в текущем проекте отключаются много стандартных инспекций
  • в текущем проекте включаются все инспекции из KPHPStorm
  • в текущей цветовой схеме изменяются некоторые настройки шрифтов
  • вызывается окошко Invalidate caches — чтобы IDE всё переиндексировала

Почему при отключении плагина какие-то ошибки в IDE?

Если хочется удалить или отключить плагин, то тогда нужно снова вручную сделать Invalidate and Restart. Потому что в phpdoc-тегах хранится доп. информация в сериализованном виде, которую IDE без плагина не может распаковать.

Я веду ещё и PHP проект, и строгие типы там не нужны

Любые плагины ставятся и включаются глобально. Нельзя в одном проекте плагин включить, а в другом выключить. При этом в PhpStorm одновременно может быть открыт как KPHP, так и обычный PHP проект. Что тогда?

В случае обычных PHP проектов плагин старается минимально изменять функциональность IDE. Иными словами, отключает те части, которые возможно. Именно поэтому все инспекции по умолчанию отключены.

На все проекты действуют (не отключаются) следующие вещи:

  • парсинг phpdoc типов, т.е. даже в PHP-проектах можно написать тип ?int, и IDE это поймёт; при этом mixed останется в значении "что угодно", как привычно в PHP.
  • применяется найстройка цветовой схемы Editor > Colors and Fonts > KPHP
  • ховеры мышкой, Type Info
  • расширяется вывод типов и подменяется у некоторых php функций

После выполнения автонастройки — для текущего проекта:

  • mixed начинает значить конкретный тип, как и в KPHP
  • включаются все инспекции на phpdoc, строгое совпадение типов и т.п.
  • нужно согласиться на Invalidate caches

Как плагин определяет, что открыт KPHP проект?

На самом деле, очень банально: при открытии любого проекта смотрит, есть ли php-полифиллы для функций tuple() и shape(). Если да, и если автонастройки ещё не было, вылазит окошко с ней.

Можно ли в обычном PHP-проекте включить всё это?

В меню Tools > KPHPStorm > Set up for Project: