Использование Live Templates и File Templates в PhpStorm для работы с друпал

В IDE PhpStorm есть два замечательных инструмента ускоряющих разработку веб-приложений - это Live Templates и File Templates.

Live Templates - это предустановленные фрагменты кода , которые можно использовать в любом файле приложения и при этом эти фрагменты используют динамические переменные. Для вставки такого фрагмента достаточно указать его короткое машинное имя и нажать Tab либо Enter.

File templates - это шаблоны файлов с заранее описанным кодом , которые позволяют избежать рутинной работы при добавлении однотипных файлов в проекты. Эти шаблоны также поддерживают переменные , как предустановленные самой IDE , так и свои собственные , которые можно заполнить в диалоговом окне при создании файла.

Давайте рассмотрим по порядку эти два инструмента , а также возможные варианты их использования для разработки друпал проектов.

Live Templates

Для добавления нового Live Templates нужно в главном верхнем меню IDE выбрать File -> Settings и в раскрывшемся окне выбрать пункт "Live Templates". Далее, нажав на зеленый крестик в правом верхнем углу, выбираем пункт "Template Group", чтобы создать новую группу шаблонов. Называем новую группу "Drupal", чтобы далее там создавать шаблоны для вставки друпал кода.

drupal-live-templates1.png

Рассмотрим создание нового шаблона на примере создания конструктора формы , использующего Form API Drupal.

В Live Templates уже есть две предустановленных переменных:

  • $END$ - является индикатором места нахождения курсора после вставки шаблона
  • $SELECTION$ - используется для так называемых surround templates, которые позволяют выделить строку в файле и после нажатия комбинации клавиш Ctrl+Alt+T и выбора необходимого шаблона ,
    произойдет вставка кода шаблона , с заменой всех переменных $SELECTION$ на содержимое выделенной строки

Для создания шаблона конструктора формы воспользуемся переменной $SELECTION$ , чтобы потом в файле при необходимости можно было вводить form_id и при этом происходила вставка кода с уже описанными функциями создания формы, ее валидации и сабмита.

Создаем новый шаблон , заполняем его аббревиатуру (машинное имя шаблона ) , его описание , указываем используемый контекст для шаблона (в данном случае - PHP) , отмечаем чекбоксом пункт "Reformat according to style"(для применения используемого для проекта Coding Style) и в текстовую область вставляем следующий код :


/**
* $SELECTION$ form.
*
* @param $form
* @param $form_state
*/
function $SELECTION$($form, &$$form_state$arguments$) {
  $END$

  return $form;
}

/**
* Validate callback for $SELECTION$ form.
* @param $form
* @param $form_state
*/
function $SELECTION$_validate(&$form, &$form_state) {
}

/**
* Submit callback for $SELECTION$ form.
* @param $form
* @param $form_state
*/
function $SELECTION$_submit(&$form, &$form_state) {
}

drupal-live-templates2.png

Теперь при выделении строки с form_id , нажатии Ctrl+Alt+T , выбора необходимого шаблона по его имени из выпадающего списка , произойдет заполнение необходимого нам кода .
При этом комбинацию клавиш можно заменить выбором в меню пункта Code -> Surround with Live Template.

Следует также отметить то что , чтобы перед значением параметра-переменной вывести символ $ необходимо вставить два символа $$ .
Кроме переменной $SELECTION$ в нашем примере есть также и другая переменная - $arguments$ , с помощью которой мы можем вводить дополнительные параметры в функцию описания формы.

После вставки кода то место , где находиться переменная будет подсвечено красной рамкой. Нам нужно будет заполнить значение переменной и при этом оно будет синхронно заполняться для всех вставок данной переменной в код. Значение переменной может быть установлено по умолчанию. После заполнения первой переменной нужно нажать Tab или Enter и курсор передвинется на позицию второго параметра и так далее, если они имеются .

В настройках параметров шаблона , которые доступны по нажатию кнопки "Edit variables" , можно указать порядок заполнения параметров , значения их по умолчанию и функции, через которые можно пропустить значения параметров после их ввода либо функции заменяющие значения параметров.

drupal-live-templates3.png

drupal-live-templates4.png

Список предустановленных функций для Live templates:

  • capitalize(string) - Приводит к верхнему регистру первый символ строки передаваемой в параметр.
  • capitalizeAndUnderscore(string) - Приводит к верхнему регистру все символы строки передаваемой в параметр и все пробелы заменяет на знак подчеркивания.
  • className() - Возвращает имя текущего класса .
  • date() - Возвращает текущую дату в формате по умолчанию либо в указанном формате , к примеру date("m.d.y").
  • decapitalize(string) - Приводит к нижнему регистру первый символ строки передаваемой в параметр.
  • fileName() - Возвращает имя файла , включая его расширение.
  • fileNameWithoutExtension() - Возвращает имя файла без расширения.
  • firstWord(string) - Возвращает первое слово строки передаваемой в параметр.
  • lineNumber() - Возвращает текущий номер строки.
  • time() - Возвращает текущее системное время.
  • underscoresToCamelCase(string) - Возвращает строку передаваемую в параметр приведенную в CamelCase стиль , убирая знаки подчеркивания и приводя к верхнему регистру символы , располагающиеся сразу после убранных символов подчеркивания. Если в параметре передается строка foo_bar, то функция возвратит fooBar.
  • underscoresToSpaces(string) - Возвращает строку передаваемую в параметр , заменяя в ней знаки подчеркивания на пробелы.
  • user() - Возвращает имя текущего пользователя.

Для дальнейшего описания описания создаваемой формы можно добавить шаблоны для вставки отдельных элементов формы.

Создадим для примера шаблон fildset элемента формы :


$form['$KEY$'](
  '#type' => 'fieldset',
  '#tree' => $tree$,
  '#title' => t('$title$'),
  '#description' => t('$description$'),
  '#collapsible' => $collapsible$,
  '#collapsed' => $collapsed$,
)

Таким образом можно создать шаблоны для всех типов элементов форм , а также можно сделать шаблоны для имплементации хуков или же шаблоны для создания Ctools плагинов.

File templates

Для создания шаблона файла необходимо открыть в меню File -> Settings и выбрать "File and Code Templates".
Нажав на зеленый плюсик сверху , добавляем новый шаблон. Заполняем имя шаблона файла, расширение создаваемого файла и в текстовой области вставляем необходимый нам код .

Для примера создадим javascript файл , который позже сможем добавить в разрабатываемый модуль или тему. В файле вставим код с Drupal.behaviors.


(function ($) {
  
  Drupal.behaviors.${behavior_name} = {};
  Drupal.behaviors.${behavior_name}.attach = function(context, settings) {
    // code      
  };

})(jQuery);

drupal-file-templates1.png

В File templates в отличии от Live templates переменные оборачиваются не в символ $ с двух сторон , а в фигурные кавычки с впереди стоящим символом $ .

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

Список предустановленных переменных для File templates:

  • ${PROJECT_NAME} - имя текущего проекта.
  • ${FILE_NAME} - имя созданного файла.
  • ${USER} - имя текущего пользователя.
  • ${DATE} - текущая системная дата.
  • ${TIME} - текущее системное время.
  • ${YEAR} - текущий год.
  • ${MONTH} - текущий месяц.
  • ${DAY} - текущий день месяца.
  • ${HOUR} - часы текущего времени.
  • ${MINUTE} - минуты текущего времени.
  • ${PRODUCT_NAME} - имя продукта IDE (в данном случае PhpStorm).
  • ${NAME} - имя функции или класса , в которые помещена переменная.
  • ${NAMESPACE} - полное название текущего пространства имен.
  • ${CLASS_NAME} - имя класса , в котором находится переменная.

На drupal.org есть проект https://drupal.org/project/phpstorm-templates , который представляет репозиторий, в котором хранятся предустановленные Live Templates и File Templates для PhpStorm. На странице проекта есть инструкция по его установке. Там имеется много примеров и заготовок для шаблонов как фрагментов кода , так и шаблонов файлов. Их можно использовать для изучения возможностей шаблонов или же использовать их как готовые решения.