Verification: a143cc29221c9be0

Path to config joomla phpstorm

Path to config joomla phpstorm

Enabling Joomla! Integration in an Existing PhpStorm Project

 When we open an existing Joomla! Project in PhpStorm, PhpStorm should detect that we're working on a Joomla! application and ask us to enable the Joomla! integrations.

When we click Enable, PhpStorm will ask us to browse to the location where the Joomla! codebase is installed. In my case, it is the root of the project I'm working on. It's also worth clicking the second prompt that asks you if you want to detect the namespace roots; this saves us having to configure the paths for the project manually. If you don't get prompted by the Joomla! Support prompt, you can enable Joomla! support manually by opening the preference pane, and navigating to Languages & Frameworks then PHP and Joomla! Support.  

Once we've enabled Joomla! support, PhpStorm asks if we would like to enable the Joomla! code styles and if we would like to enable the Joomla! docblock templates. Joomla! has its own rigorous code style and docblocks, so enabling these is always a good idea; we'll learn more about these later.

Creating a New Joomla Module/Plugin/Component/Empty Joomla! Project

To create a new Joomla project, go to File then New Project... and select Joomla! Integration from the left-hand options. You'll need to tell PhpStorm where to find your Joomla! installation path (unless you've already specified it at the previous step), give your project a name, and select what type of Joomla! project you're going to create. Here we're creating a new Joomla! module.

PhpStorm will then create the `joomla-module.php` file, and the `joomla-module.xml` file that you need to use this project as a Joomla! module. You'll need to edit the configuration XML file before you can use the module.

Development Environment Configuration

Joomla! Include Paths

With Joomla! support enabled and PhpStorm knowing where your Joomla! install is, the path to this Joomla! install should be included in your include paths by default. You can check this by selecting External Libraries in the left-hand project browser, and check that you can see joomla library root under PHP. If you don't see this, you'll need to add the path to your Joomla! install to your project manually in Settings | PHP | Include path.

Joomla! Coding Standard (Code Style)

PhpStorm ships with a coding standard for Joomla! code style, and you should be asked if you want to enable this when you enable Joomla! support. If you wish to enable the Joomla! code style manually, browse to Editor, Code Style then PHP in the preference pane. There, you can add the pre-defined Joomla! styles by clicking Set From..., and selecting Predefined Style then Joomla!

JHtml::_($argument) and JText::_($argument) support

JHtml::_($argument) support

The latest versions of PhpStorm come with support for the ` _` static method of the `JHtml' class. This is a magic method that allows you to invoke helpers by passing in a string that contains the class name plus the method name, separated by a dot. PhpStorm can parse these strings, and provide you with the usual helpers associated with class and method names in the IDE. For example, here we are using the `form.token` helper, and when we invoke Brief Info over the string (default to CMD/CTRL plus hover over the item), we see the method signature for this helper method:

Holding CMD/CTRL and clicking the string takes us straight to the `token` static method of the `JHtmlForm` class just as we would expect. Of course, the `JHtml` class comes with full code completion and type hinting like all classes do in PhpStorm.

JText::_($argument) support

Similarly to JHtml support, PhpStorm now also supports the static methods of the `JText` class. Text allows you to handle translations from definitions (typically in .ini files) and output the translation in the correct place. When you use the `_` or `sprintf` or 'script' methods of `JText` and pass in a valid string with a key name, PhpStorm will allow you to use Brief Info and navigate to the definition (using CMD/CTRL and click) to be taken directly to the .ini file that defined that key.

Databases

Data source detection

PhpStorm comes with a database browser built right in, and the Joomla! integrations allow us to quickly and easily configure the database tool from the configuration file that Joomla! creates containing our credentials. Once we've opened the Database tool (I usually hover over the menu icon in the bottom left of the screen and select Database), we can add a new data source for our Joomla! database by clicking the + icon and then selecting Import from sources...

We then see the Add New Datasource dialog, but with all the fields completed from the settings in the `configuration.php` file. Simply click Test Connections to check everything is working, and then click OK.

Joomla Datasource

Database prefix support

You can see that Joomla! adds a prefix to the database tables (which is generated or configured during the installation wizard), and this can make writing queries in the query editor (part of the database tool) quite painful. 

PhpStorm provides database prefixes support and changes #__  on fly to the prefix that is defined in the $dbprefix field in the configuration.php file. You will also have completion working for your SQL queries.To have it working, make sure that SQL Dialect for project is equal to Database (Settings-> SQL Dialects).

If you Ctrl+Click, you can navigate directly to the table from the query.

Joomla! Doc-blocks standard support

Joomla! code styles have strict standards about docblocks - including which docblock annotations are required, which are optional, and which order they should be presented in. PhpStorm now ships with an inspection that will tell you exactly what is wrong with your docblocks, and why they don't meet Joomla! strict standards.

Joomla! CodeSniffer

Joomla! provides a ruleset for use with PHP CodeSniffer, and PhpStorm comes with support for PHP CodeSniffer out of the box.

Refer to the PHP Code Sniffer in PhpStorm tutorial with the Joomla! CodeSniffer standards to add more inspections for code style within PhpStorm.

Интеграция PhpStorm c Joomla

Первый шаг - установка Joomla. Самую последнюю версию мы всегда можем скачать с сайта Joomla! Downloads.

Разработку мы будем вести отдельно от установленной Joomla. Тем не менее Joomla необходима нам для развёртывания расширения (все изменения, которые мы будем вносить в процессе разработки, будут загружены на наш локальный или удалённый сервер), что позволит нам тестировать и отлаживать наше расширение. Кроме того, установленная Joomla будет являтся источником для автоподстановки во время написания кода.

В нашем примере Joomla локально установлена в директорию H:\OSPanel\domains\jpathru и доступна по адресу http://jpathru.local, а удалённо (на виртуальном сервере) в директорию /var/www/html/jpathru.remote и доступна по адресу http://jpathru.remote.

Переходим к созданию проекта в PhpStorm.

Создание проекта

Интеграция с Joomla начинается сразу же при создании проекта, когда мы жмем Create Project:

Стартовое окно

Интеграция нужна для получения подсказок, автоподстановок в написании кода, а также вы сможете легко переходить по зависимостям.

В окне создания проекта выбираем слева Joomla! Integration, а справа указываем расположение проекта, путь до установки Joomla, путь до файла конфигурации Joomla и тип проекта (выбираем Joomla! Component):

Окно создания проекта

Нажимаем Create и PhpStorm создаст проект с предустановленным каркасом компонента:

Дерево проекта компонента Joomla

При этом он тут же попросит поставить поддержку Joomla DocBlock Templates:

Joomla DocBlock Templates

Joomla DocBlock Templates позволяют автоматически заполнять каркас описания классов и методов в стиле Joomla.

Каркас несомненно сократит время начальной разработки, но в рамках этого руководства мы остановимся на более лаконичном варианте:

Дерево компонента JPathRu

Если вдруг мы захотим вернуться к настройке интеграции Joomla, то сделать это довольно просто. Заходим в Settings и пишем в поиске joomla - откроется окно интеграции Joomla:

Окно настроек интеграции с Joomla

Если у вас нет локального сервера и в проекте PhpStorm лишь часть сайта - создайте рядом с проектом папку и положите туда файлы Joomla. В настройках интеграции можно будет указать путь к этой папке.

База данных

Для поддержки базы данных PhpStorm использует файл конфигурации Joomla. Это дает возможность использовать дополнительные функции в редакторе, такие как соединение с базой данных или автоподстановку для конструктора запросов JDatabaseQuery.

Создание соединения

Для создания соединения с базой данных необходимо настроить источник данных (Data Source):

  1. Открываем окно инструмента базы данных (Database Tool Window).
  2. Нажимаем на значок +, чтобы открыть меню.
  3. Выбераем параметр Import from sources...
  4. Откроется окно Data Source and Drivers:

    Окно Data Source and Driver

  5. На вкладке General все данные должны быть предзаполнены настройками из файла конфигурации Joomla.
  6. Задаём название источнику данных или оставляем по умолчанию joomla.datasource.
  7. Если мы видим надпись Download missing driver files, то жмем на Download и недостающие драйвера будут скачаны автоматически.
  8. Нажимаем Test Connection, чтобы проверить правильность всех данных.
  9. Если появилась ошибка, связанная с server time zone, то необходимо настроить временную зону:

    Ошибка server time zone

  • Заходим в иконку Open Server > Дополнительно > Конфигурация > MySQL:

    Настройки Open Server Panel

  • Откроется файл настроек.
  • Добавляем в раздел [mysqld] настройку default_time_zone='+00:00':

    Файл настроек MySQL

  • Сохраняем файл и перегружаем Open Server.
  • Нажимаем Test Connection
  • Должна появится надпись об успешном соединении:

    Сообщение об успешном соединении с базой данных

  • Жмем ОК, чтобы сохранить источник данных.
  • В окне базы данных доступна наша база данных:

    Список таблиц базы данных

  • Настройка SQL диалекта

    Настройка SQL диалекта поможет PhpStorm работать с языком запросов и выполнять автоподстановку. Заходим в Settings и пишем в поиске dialects - откроется окно SQL Dialects:

    Окно настроек SQL Dialects

    Так как мы работаем с MySQL, то в настройке Project SQL Dialect выбираем MySQL. Если вы чаще всего работаете MySQL, то такую же настройку можно установить и для Global SQL Dialect.

    Работа в редакторе

    Теперь, когда мы настроили источник данных и диалект, PhpStorm начнёт понимать конструктор запросов JDatabaseQuery и автоматически выполнять подстановку при создании запросов.

    Давайте посмотрим на этот запрос из компонента Баннеры:

    $query = $db->getQuery(true)
    	->select('MAX(ordering) as ' . $db->quoteName('max') . ', catid')
    	->select('catid')
    	->from('#__banners')
    	->group('catid');
    $db->setQuery($query);

    Как показано на скриншоте ниже, слово cat было набрано, а параметры показаны во всплывающем окне:

    Автоподстановка JDatabaseQuery

    Совпадения отображаются фиолетовым цветом. Выберите catid из списка и нажмите Enter - имя будет дозаполнено.

    Такая же автоподстановка работает и для таблиц:

    Автоподстановка для таблиц

    Мы также можем напрямую переходить от запроса к таблице или полю. Когда курсор наведен на catid в коде ->select('catid'), нажимаем CTRL-B / CMD-B, курсор переместится на боковую панель базы данных и выберет поле catid в таблице banners.

    Мы можем выполнять запрос напрямую из кода (когда курсор наведён на поле выборки), используя CTRL-Enter / CMD-Enter. Это работает только для тех запросов, которые являются исполняемыми.

    Анализатор кода

    Анализатор кода необходим для того, чтобы выявлять "плохой" код и следить за тем, чтобы код соответствовал единому стандарту оформления, принятому в Joomla. Подробнее об установке и настройке читайте в официальной документации (на русском) Joomla CodeSniffer.

    Развёртывание (deployment)

    Для того, чтобы загружать файлы нашего проекта на наш локальный или удалённый сервер, необходимо настроить развёртывание проекта PhpStorm на сервер (деплой).

    Настройка локального сервера

    Начнем настройку развёртывания с локального сервера.

    1. Заходим в Tools > Deployment > Configuration. Откроется окно Deployment.
    2. Нажимаем значок +, выбираем Local or mounted folder:

      Окно Deployment

    3. Задаём название серверу. Например, jpathru.
    4. Жмем ОК, откроется окно настройки развёртывания сервера jpathru:

      Окно настройки развёртывания локльного сервера

    5. На вкладке Connection задаем параметры соединения:

      • Folder: указываем путь до установки Joomla.
      • Web server URL: указываем адрес установки Joomla (не обязательно).

      На вкладке Mappings задаем соответствие (маппинг) путей проекта (Local path) путям на сервере (Deployment path). Например, путь admin в проекте соответствует путю administrator\components\com_jpathru на сервере. Таким образом прописываем все соответствия нашего проекта:

      Параметры соответствия путей (маппинг) локльного сервера

      На вкладке Excluded Paths мы можем указать папку или файлы, которые должны быть исключены из процесса развёртывания.

    6. Жмём ОК, конфигурация завершена.

    Теперь при нажатии на значок Deployment нам доступно полное меню развёртывания и мы можем закачивать и скачивать файлы с локального сервера:

    Полное меню развёртывания

    Мы также можем просматривать файлы сервера через опцию Browse Remote Host, которая открывается в боковой панели:

    Окно Browse Remote Host

    Закачивать файлы вручную не совсем удобно, поэтому в PhpStorm предусмотрен режим автоматической загрузки измененных файлов. Для настройки этой возможности заходим в Tools > Deployment > Options и в параметре Upload changed files automatically to the default server выбираем опцию On explicit save action (Ctrl + S):

    Окно Deployment Options

    Теперь при каждом сохранении измененные файлы будут автоматически загружаться на сервер, который назначен сервером по умолчанию.

    Настройка удалённого сервера

    Настройка развёртывания на удалённый сервер практически идентична локальному. Отличие только в том, что мы будем использовать другой тип соединения.

    В нашем случае в качестве удалённого сервера выступает виртуальный сервер.

    1. Заходим в Tools > Deployment > Configuration или через значок Deployment выбираем Configuration.
    2. Нажимаем значок +, выбираем SFTP.
    3. Задаём название серверу. Например, jpathru-remote.
    4. Жмем ОК, откроется окно настройки развёртывания сервера jpathru-remote:

      Окно настройки развёртывания удалённого сервера

    5. На вкладке Connection задаем параметры соединения:

      • Host: указываем адрес установки Joomla.
      • User name: указываем имя пользователя, в нашем случае это root.
      • Authentication: указываем тип аутентификации. Рекомендуем указать Key pair.
      • В появившейся настройке Private key path задаём путь до нашего приватного ключа.
      • Root path: указываем путь до директории установки Joomla.
      • Web server URL: указываем адрес установки Joomla (не обязательно).
      • Нажимем на Test Connection и убеждаемся, что соединение успешно.

      На вкладке Mappings задаем соответствие (маппинг) путей проекта (Local path) путям на сервере (Deployment path) по аналогии с локальным сервером:

      Параметры соответствия путей (маппинг) удалённого сервера
    6. Жмём ОК, конфигурация завершена.

    Сборка расширения

    Для сборки расширения мы будем использовать Phing. Это достаточно гибкий инструмент, который прост в освоении (основан на PHP), и в то же время достаточно мощный. Он имеет множество встроенных средств и неплохой API. Управлять сборкой мы можем при помощи XML файлов, в которых описываем цели и задачи, выполняемые в процессе сборки.

    В сети достаточно руководств по теме Phing, поэтому в качестве примера мы используем простой XML файл, задача которого собрать наше расширение в zip-архив (для тестирования или релиза), который будет годен для установки в Joomla. Создаем в проекте файл build.xml со следующим содержимым:

    Теперь жмем правой кнопкой мышки на файле и выбираем опцию Add as a Phing Build File. В боковой панели появится окно работы с Phing.

    Окно работы с Phing

    Пробуем запустить команду make-dev. PhpStorm откроет окно Phing с предупреждением о том, что не прописан путь до исполняемого файла Phing:

    Окно Phing

    Жмем на надпись Click here to download the latest from phing.info и указываем путь, по которому мы хотим сохранить исполняемый файл. PhpStorm автоматически загрузит необходимый файл и пропишет путь. Жмем OK и PhpStorm запустит выполнение команды:

    php.exe H:\phing-latest.phar -f "H:/My documents/My Projects/jpathru/build.xml" make-dev
    Buildfile: H:\My documents\My Projects\jpathru\build.xml
    
    JPathRu > make-dev:
    
    	[echo] Deleting old development build.
    	[echo] Making the development jpathru package.
    	[zip] Building zip: H:\My documents\My Projects\jpathru\build\com_jpathru_dev.zip
    
    BUILD FINISHED
    
    Total time: 0.1345 seconds
    
    Build finished at 01.06.2019 21:19 with exit code 0.

    Git

    После того, как проект создан и настроен, можно добавлять его в git. Сначала в проекте создаём файл .gitignore и прописываем в нём папки, которые git должен игнорировать:

    .idea
    build
    • .idea - папка с настройками проекта PhpStorm;
    • build - папка, в которую складываются сборки расширения.

    Далее открываем терминал в PhpStorm и выполняем команды:

    git init
    git add .
    git commit -m "Add project files"
    

    PhpStorm автоматически поймёт, что проект находится под git, что даст нам возможность работать с git непосредственно из PhpStorm, без использования консольных команд. Подробонее о работе с Git в PhpStorm читайте в официальной документации.

    Настройка Xdebug

    Для отладки кода мы будем использовать Xdebug. Это популярный инструмент, который является расширением для PHP. Тем более, он уже предустановлен на нашем локальном и виртуальном сервере.

    Виртуальный сервер CentOS

    Если на виртуальном сервере Xdebug не установлен, то устанавливаем командой:

    sudo yum install php-xdebug

    Обратите внимание, что существуют две версии Xdebug - 2 и 3, и они отличаются по синтаксису настроек. Будьте внимательны!

    Open Server

    На локальном сервере (Open Server) открываем файл настроек PHP - php.ini:

    Путь до конфигурации PHP в Open Server

    Находим раздел [Xdebug]. Подключаем расширение Xdebug и устанавливаем его параметры:

    zend_extension = "%sprogdir%/modules/php/%phpdriver%/ext/php_xdebug.dll"
    xdebug.idekey = "PHPSTORM"
    xdebug.remote_enable = 1
    xdebug.remote_port = 9000

    Виртуальный сервер CentOS

    На виртуальном сервере заходим в директорию /etc/php.d, находим файл настроек Xdebug. Например это может быть /etc/php.d/15-xdebug.ini. Открываем файл, подключаем расширение Xdebug и устанавливаем его параметры (строка zend_extension="xdebug.so" чаще всего уже присутствует в этом файле, но обязательно убедитесь в ее наличии):

    Для версии Xdebug 2

    xdebug.idekey = "PHPSTORM"
    xdebug.remote_connect_back = 1
    xdebug.remote_enable = 1
    xdebug.remote_port = 9000

    Для версии Xdebug 3

    xdebug.idekey = "PHPSTORM"
    xdebug.mode = debug
    xdebug.client_port = 9003
    xdebug.discover_client_host=1
    

    Чтобы убедиться, что Xdebug активирован, мы можем зайти в панель управления Joomla, пункт меню Система > Информация о системе, вкладка Информация о PHP. На этой вкладке находим находим раздел Xdebug и проверяем настройки.

    Инструкция по переходу от Xdebug 2 к Xdebug 3 https://xdebug.org/docs/upgrade_guide

    Никогда не оставляйте включенным Xdebug и открытым порт на живом сервере. Это серьёзная уязвимость в безопасности.

    Настройка браузера

    Чтобы начать отладку, сначала необходимо активировать механизм отладчика на сервере с помощью специальных параметров запроса с вашего браузера. Делается это с помощью установки специальных кук отладки. Хотя вы можете делать это вручную, более удобно использовать расширение для браузера, которое позволяет включать отладчик одним щелчком мыши.

    Здесь вы найдете ссылки на расширения отладки для различных браузеров. После установки, в настройках расширения указываем для параметра IDE Key значение, которое прописывали в php.ini (PHPSTORM).

    Настройка PhpStorm

    Сначала настраиваем Xdebug. Заходим в настройки PhpStorm, далее Languages & Frameworks > PHP > Debug. В разделе Xdebug указываем порт, который прописывали в php.ini (9000). Чтобы Xdebug не останавливался на первой строчке приложения, обязательно отключаем два нижних чекбокса.

    Параметры Xdebug в PhpStorm

    Упрощенный способ отладки

    В принципе после этого вы уже можете пользоваться отладкой – вам достаточно установить breakpoint в программе и активировать расширение отладки в браузере. PHPStorm спросит о входящем соединении, вы его подтвердите и можете изучать работу своей программы изнутри.

    Но можно пройти до конца и настроить все по полной программе.

    Если что-то пошло не так

    Если вы вроде бы все сделали правильно, однако же запустить отладку не получается, вам поможет пункт меню Run -> Web Server Debug Validation

    На что следует обратить внимание в первую очередь? Убедитесь, что у вас имеется последняя версия PHPStorm – крайне важно иметь актуальное обновление!


    Полный способ

    Теперь нам нужно добавить сервер. Переходим в Servers, нажимаем + и задаем параметры локального сервера:

    • Name: задаем название, например JPathRu Local.
    • Host: указываем URL локальной установки Joomla, в нашем случае http://jpathru.local.
    • Включаем галочку Use path mappings и настраиваем маппинг - соответствие путей проекта путям на сервере.

    Параметры локального сервера в PhpStorm

    Таким же образом добавляем виртуальный сервер и задаем его параметры:

    Параметры виртуального сервера в PhpStorm

    И наконец добавляем настройки отладки. Заходим в Run > Edit Configurations, нажимаем + и выбираем в списке PHP Remote Debug. В открывшемся окне задаем параметры отладки локального сервера:

    • Name: задаем название, например JPathRu Local.
    • Включаем галочку Filter debug connection by IDE key.
    • Выбираем в списке сервер JPathRu Local. В IDE key должно быть значение PHPSTORM.

    Параметры отладки в PhpStorm

    Таким же образом добавляем параметры PHP Remote Debug для виртуального сервера: указываем в названии JPathRu Remote и выбираем сервер JPathRu Remote.