in Профессиональное

PhpStorm: поддержка Symfony Command Line

Начиная с PhpStorm 2.0 можно использовать Symfony command line tool при помощи Command Line Tool Support.

Ниже приводится небольшое руководство по использованию. Вам понадобится PhpStorm 2.0 и Symfony 1.1 или более поздней версии (включая Symfony 2.0 BETA – в оригинальное руководство не входило, но мной проверено). Если у вас нет Symfony, руководство по установке вы можете найти здесь.

В первую очередь нам нужно настроить новый command line tool.

Загрузка Symfony Commands

Откройте меню Settings | Command Line Tool Support и нажмите в появившемся окне кнопку Add. Вам будет предложено три опции, выберите “Symfony”:

Choose Symfony Framework To Add

Затем укажите путь к файлу $Symfony_home$/data/bin/symfony. Для типичной конфигурации (из руководства симфони) путь будет следующим: $Project_root$/lib/vendor/symfony/data/bin/symfony. Описания команд Symfony будут загружены и сохранены в файл среди прочих настроек проекта. В диалоговом окне настроек это будет выглядеть следующим образом:

Symfony description in Settings

  • Поле Tool Path содержит путь к CLI (php и фреймворка) и будет различаться в зависимости от фреймфорка. Для Symfony это “php  $path_to_symfony$”  и “$Zend_Framework_Tool_home$/bin/zf.bat” для Zend Framework. $PhpExecutable$ – это макрос, он заменяется на путь к исполнимому файлу CLI PHP, $ProjectFileDir$ это тоже макрос, он заменяется на полный путь к проекту. Макросы позволяют легко перемещать настройки между несколькими IDE.
  • Полный Tool Path может быть очень длинным и неудобным в наборе, поэтому имеется алиас, который представляет из себя строку, которую можно использовать для вызова CLI вместо Tool Path.
  • Чекбокс “Enable” поможет вам легко включать и отключать команды фреймворка из списка автоподстановки, не удаляя настройки. В данном случае чекбокс включен, таким образом команды Symfony будут отображаться в списке. Нажмите Ctrl +Shift+X или выберите в меню Tools | Run Command… и наберите алиас “s”:

Symfony commands list

Используем Symfony Command Line

Теперь создадим простой проект на Symfony c использованием Command Line Tool, как это описано в “Getting  Started” документе.

Создаем проект Symfony

Нажимаем Ctrl +Shift+X и набираем:

Generate project command

Команда имеет два параметра:

  • Обязательный параметр “name”. Мы воспользуемся макросом $ProjectName$, который будет заменен на наименование проекта PhpStorm.
  • Опциональный параметр “author”.

Перед выполнением команды макрос $ProjectName$ будет заменен на имя проекта и алиас “s” будет заменен на Tool Path. В данном случае это будет что-то типа “usr/bin/php /home/sfproject/lib/vendor/symfony/data/bin/symfony”.

Результат – будет создан проект:

Toolwindow with generated project

Настройка доступа к базе данных

Теперь настроим доступ к БД при помощи команды “php symfony configure:database “mysql:host=localhost;dbname=dbname” root mYsEcret”

Configuring database command

Создание приложения Frontend

Давайте создадим приложение frontend без экранирования вывода (что в общем-то сделает его менее защищенным!). Нажмите Ctrl +Shift+X и наберите:

Generate application command

Заметьте, что опции команд также поддерживаются. В примере выше это была опция –escaping-strategy=false.

Результат работы команды:

Commands output

Права доступа к директориям

Следующим шагом является установка прав на директории cache/ и log/. Это также можно сделать при помощи Command Line Tool Support. Тул попытается выполнить команды (макросы таже доступны). Но имейте в виду, что команды “chmod” по-умолчанию нет в windows системах (если вы не используете например cygwin).

Chmod command

Результат:

Chmod and ls output in toolwindow

Примечание:

Вообще говоря для установки прав можно нужно использовать команду “symfony project:permissions” // hudson@work

После этого надо настроить web-сервер, как описано в документации, и запустить его.

Тестирование

Проверьте доступ к новому приложению – откройте в браузере http://localhost:8080/index.php/ и затем проверьте доступ к dev окружению http://localhost:8080/frontend_dev.php/.

Если вы видите такую страницу, ваш проект успешно создан:

Project page

Добавляем пользовательский task.

Давайте создадим простой таск “hello”. Подразумевается что ранее вы уже настроили команды Symfony, как это описано выше и создали проект.

Нажмите Ctrl+Shift+X и выполните команду:

Generate task command

В директории lib/task будет создан класс “helloTask”.

Откройте класс helloTask в редакторе и выполните следующие несложные изменения в его методе “execute”:

HelloTask class execute function

Откройте description file для Symfony: выберите Settings |  Command Line Tool Support и нажмите кнопку “Open definition in editor”.

Добавьте описание новой команды “hello”:

Hello command description

Текст описания:

<command>
    <name>
        hello
    </name>
    <help>
        My first task with no parameters.
    </help>
</command>

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

Hello command

Результат выполнения отобразится в консоли:

Hello, invoker!

Решение проблем

Если у вас возникнут проблемы после редактирования файла описания и нужная вам команда не появится, откройте таб Validation в консоли. Этот таб показывает информацию о проблемах парсинга файла описания:

Validation tab

Вы также можете получить информацию о формате файла описания из схемы .idea/commandlinetools/schemas/frameworkDescriptionVersion1.1.xsd. Этот путь указан в созданном файле описания и редактор выполняет валидацию автоматически с его использованием.

Hope this hepls как говорится, ваш hudson@work 🙂

Write a Comment

Comment

*

  1. Лучшая IDE! Сидел и на Zend Studio and Netbeans and Eclipse, но PhpStorm понравился больше всех.

  2. А я по прежнему сижу на нетбинсе.

    Раз в полгода ставлю шторм, открываю, минут 15 пытаюсь работать, потом блюю, закрываю, удаляю.

    Но не хочу холиварить, просто может быть у меня аллергия на него.

    • Хотя нетбинс меня тоже не полностью устраивает. Я вообще оочень привередливый в этом плане.

    • Чёрт… как знал что надо к себе закачивать. Поленился… ((( Попробую восстановить на неделе.

    • А оригинал по которому эта статья написана не знашь куда переехал? А то я картинки прямо из него вставлял.