Генератор подсказки типов для Joomla!
Генерировать подсказки типа кода для устаревших классов API ядра Joomla!
https://github.com/nikosdion/joomlatypehints
Что оно делает?
Это позволяет вашей IDE обеспечить завершение кода для старого ядра Joomla! Классы API, которые были объявлены устаревшими и заменены их аналогами в пространствах имен.
Одна картинка стоит тысячи слов. Вот Joomla! 3.8 промежуточная ветвь phpStorm.
До
После
Применение
Установка и первое использование
Клонируйте этот репозиторий и инициализируйте в нем зависимости 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
как устаревший (если он поддерживает такую функцию), поэтому вы можете в конечном итоге реорганизовать его на новое имя класса.