Генерировать подсказки типа кода для устаревших классов API  ядра Joomla!

https://github.com/nikosdion/joomlatypehints

Что оно делает?

Это позволяет вашей IDE обеспечить завершение кода для старого ядра Joomla! Классы API, которые были объявлены устаревшими и заменены их аналогами в пространствах имен.

Одна картинка стоит тысячи слов. Вот Joomla! 3.8 промежуточная ветвь phpStorm.

До

Before applying any typehints. Boo!

После

Code hinting, type checks and deprecated warnings? Check!

Code completion and method hints? Check!

Применение

Установка и первое использование

Клонируйте этот репозиторий и инициализируйте в нем зависимости Composer

git clone https://github.com/nikosdion/joomlatypehints.git
cd joomlatypehints
composer install

Вы можете создавать подсказки типа для опубликованной версии Joomla! или Joomla! установки на вашем компьютере. Последнее полезно для основного развития против промежуточной ветви.

Для опубликованных версий Joomla! , например, 3.7.4

php typehints.php generate --for-version=3.7.4

Совет разработчика Ninja: аргумент -for-version также принимает любое опубликованное имя ветки GitHub для репозитория joomla / joomla-cms. Например, если вы хотите сгенерировать typehints для текущей промежуточной ветви:

php typehints.php generate --for-version=staging

Для установки Joomla! , например, в /var/www/joomla-cms

php typehints.php generate --for-site=/var/www/joomla-cms

По умолчанию классы подсказки типов генерируются в папку generated_hints. Вы можете изменить это, передав имя папки команде (папка уже должна существовать). Например:

php typehints.php generate --for-site=/var/www/joomla-cms /var/www/joomla-cms/typehints

Вызовите приложение без каких-либо параметров, чтобы получить справку. Это самодокументируемо!

Использование typehints с phpStorm

  • Перейдите в раздел «Файл», «Настройки».
  • В левом дереве выберите Язык и Фреймворк, PHP.
  • Перейдите на вкладку «Включить путь».
  • Нажмите кнопку [+] в правой части списка путей включения.
  • Выберите «Задать другое ...» и выберите созданную папку подсказок классов.

Как это делается?

Он читает  файл библиотеки Joomla/classmap.php и генерирует поддельные файлы классов, чтобы устаревший класс расширялся из нового класса с именами. Вы должны включить эти файлы в путь поиска класса IDE для завершения кода для работы.

Например, JRegistry перестала существовать как самостоятельный класс в Joomla! 3.3.0. Он был заменен \Joomla\Registry\Registry. Любой код, в который был введен в JRegistry, прекратил показывать подсказки для разработчиков с 3.3.0.

Эта утилита создает файл определения фальшивого класса для этого класса в форме

/** 
* @deprecated 4.0 
*/ 
class JRegistry extends \Joomla\Registry\Registry {}

Это позволяет вашей среде IDE знать, что даже если вы использовали JRegistry в подсказках типа DocBlocks / PHP 7.x, он должен обеспечить завершение кода для нового класса \Joomla\Registry\Registry . В то же время ваша среда ID будет отмечать старый класс JRegistry как устаревший (если он поддерживает такую ​​функцию), поэтому вы можете в конечном итоге реорганизовать его на новое имя класса.