Как заставить Eclipse с PDT работать с зарегистрированными псевдонимами пространства имен Joomla?

То, что я пытаюсь сделать, это начать работать под Joomla! проект в Eclipse PHP IDE с установленными средствами разработки PHP. Я использую Eclipse Oxygen для разработки PHP и работаю с проектом Joomla 3.8.2.

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

$par = JComponentHelper::getParams('com_somecomponent');

Это дает мне ошибку проверки:

JComponentHelper не может быть преобразован в тип.

Я предполагаю, что это связано с тем, что JComponentHelper зарегистрированный Joomla! псевдоним и настоящее имя \Joomla\CMS\Component\ComponentHelper, Как я могу предоставить Eclipse эту информацию, чтобы иметь возможность правильно разрешать пространство имен?

4

Решение

Проект Joomla постепенно переводит классы фреймворка из глобального пространства имен, но предоставляет псевдонимы, чтобы облегчить переход для старых проектов и расширений. Как мы знаем, Eclipse не может вывести информацию об этих псевдонимах, потому что Joomla генерирует их динамически, используя PHP class_alias() функция.

Начиная с версии 3.8.0, Joomla предоставляет генератор-заглушка который анализирует классы в структуре, чтобы создать файл, из которого IDE могут легко загрузить недостающую информацию из:

По мере того, как Joomla переводит свои основные классы из постоянного пространства имен в глобальное пространство имен PHP на использование классов PHP с пространством имен, для разработчиков будет обычным явлением работать в среде, где их код все еще использует старые имена классов, которые могут отсутствовать в более новых выпусках Joomla. кроме как в автозагрузчике PHP как псевдоним класса. Таким образом, этот сценарий позволяет разработчикам создавать файл сопоставления, который они могут использовать в своей локальной среде, что создаст «реальные» классы для имен псевдонимов классов и позволит таким вещам, как автозаполнение IDE, работать нормально.

Мы можем сгенерировать этот файл, запустив stubGenerator.php Утилита находится в строить / каталог из командной строки или терминала:

php build/stubGenerator.php

…который создает stubs.php файл в корневом каталоге проекта. Затем Eclipse должен отобразить информацию Content Assist для псевдонимов. Этот файл также работает для других сред IDE, таких как NetBeans и PHPStorm. Незначительное предостережение:

Обратите внимание, что этот файл вызовет некоторые ошибки IDE, поскольку он будет генерировать классы-заглушки, расширяющие конечный класс (что не разрешено в PHP). Поэтому предполагается, что проверки этого файла отключены.

К сожалению, мы не можем исключить один файл из проверки PDT PHP, но мы можем удалить ошибки из окна «Проблемы», если они появляются, что должно подавлять их до тех пор, пока мы не создадим файл заглушек.


Хотя это решает проблему в Eclipse, мы должны учитывать, что предстоящие релизы Joomla осудить многие из этих псевдонимов для удаления, поэтому мы хотим избежать ссылки на них, когда это возможно, так как Joomla движется к Composer и Соглашение о пространстве имен PSR-4.

Вместо непосредственного использования псевдонима:

$par = JComponentHelper::getParams('com_somecomponent');

…рассмотрите возможность импорта класса:

use Joomla\CMS\Component\ComponentHelper;
...
$par = ComponentHelper::getParams('com_somecomponent');
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector