Wednesday, February 22, 2012

PhpStorm - Новый PhpStorm 4.0 EAP build, и где мои настройки?

Вчера узнал о новом EAP билде PhpStorm 4.0 и сегодня решил поставить. Запускается вроде бы шустро. В остальном изменений сильных не заметил пока. Но... Куда же подевались мои Live Templates, настройки? IDE теперь слаживает в ~/.WebIde40/ (было в ~/.WebIde10/). Тайна кроется в файле %PhpStorm%/bin/PhpStorm.exe.vmoptions (Windows), в параметре sessionname. Он равен как раз имени директории, только без точки. Структура все-таки внутри похожая, и но раз JetBrains перенесли в другую директорию, то наверное все же что-то изменили в новой версии. В общем, можно просто указать старое имя директории и забыть, или просинхронизировать директории.

Если вы последовали моему примеру и положили templates в DropBox, то теперь нам остается удалить templates директорию и создать симлинк по примеру (для Windows):
mklink /D c:\Users\kirby\.WebIde40\config\templates\ d:\MyDocs\dropBox\IT\phpstorm\templates\
Перезапускаем "шторм" и у нас все на месте.

Если с Live Templates мы справились, то и с пропавшими настройками/горячими клавишами можно/нужно поступить также. Нужно проделать те же операции, но только с директорией с options/keymaps и настройки/горячие клавиши "шторма" вернутся.
Есть и другие "полезные" директории, которые можно тоже просинхронизировать.

Wednesday, February 8, 2012

PhpStorm - Синхонизация Live Template

Локально шаблоны лежат в папке ~/.WebIde10/config/templates.
"~" -- это директория пользователя в системе. Под Windows это как правило C:\Users\[username].
Можно создать ссылку в DropBox, и эти шаблоны никуда не пропадут. Правда лучше настроить так чтобы на самом деле они лежали в DropBox, а директория PhpStorm ссылалась на источник.

На моем примере это так (Windows):
копируем содержимое
c:\Users\kirby\.WebIde10\config\templates\ ⇒ d:\MyDocs\dropBox\IT\phpstorm\templates\
и выполняем команду
mklink /D c:\Users\kirby\.WebIde10\config\templates\ d:\MyDocs\dropBox\IT\phpstorm\templates\

PhpStorm - Мои Live Template

Приведу некоторые live template. ...для тех кто может найдет это интересным, т.к. иногда полезно подсматривать в то, кто как делает :)

Групповой PhpDoc блок
Все время забываю как он пишется :) Итак...
Имя: group_comment
Писать имя не прийдется, достаточно применить к выделению. Правда выделять нужно так чтобы не было в выделении пробелов слева, иначе будет криво.
/**#@+
 * Group comment
 */
$SELECTION$
/**#@-*/

Switch..case
Имя: swi
(Нативной кажется нет, или не такая была...)
switch ($NAME$) {
    case 'v1':
        break;

    default:
        break;
}

Для мадженты:

PhpDoc для класса
Имя: cldoc
/**
 * Class of ...
 *
 * @category   Mage
 * @package    Mage_ModuleName
 * @author     Magento Cool Team 
 */

Создание модели
Имя: mm
Mage::getModel('$END$');


Создание хелпера
Имя: mh
Mage::helper('$END$');



Monday, February 6, 2012

PhpStorm - Live Template

О live tempate, почитать можно на Википедии - Zen Coding.
В PhpStorm можно использовать как существующие, так и свои. Перейти к настройкам можно в Settings ⇒ Live Templates. При создании, можно использовать переменные.
PhpStorm имеет только две предустановленные переменные:
$END$ - место курсора после вставки.
$SELECTION$ - место вставки выделенного текста.
Нетрудно догадаться что последнюю переменную нужно применять для шаблонов которые работают с выделением.

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

PHP - Speed Test

array_push()
Бывает в коде попадается функция array_push(). Заранее думаю что это медленее от кострукции $array[] = 'value'. Решил потестить.
Результаты:
Method array_push() $arr[] = 'value'
Time 1.3622 0.1044
Performance8% 100%
В документации тоже говорится об этом.

empty()
В коде можно использовать empty($data['key']) или isset($data['key']) && $data['key'] != true. Что же быстрее?
Method isset empty
Time 0.0476  0.0297 
Performance63%  100%
В целом разница не существенная -- ругать не будут :). Но все же лучше во всех отношениях использовать empty() потому что это почти в два раза быстрее, и меньше кода будет.

Результаты на 100 000 итераций.

Wednesday, February 1, 2012

PhpStorm - Мои горячие клавиши

Most useful hotkeys from PhpStorm

Documentation
CTRL+Q -+ pick cursor upon method/variable/constant/function/class and after pressing key combination it will show documentation of this element.

Selected
CTRL+ALT+T - Applying Live Template to the selected code.
CTRL+J - Insert Live Template pattern.
CTRL+D - Copy selected below. The same if you press CTRL+C, CTRL+V, CTRL+V. I believe this function a bit useless, that's why I updated binding of this key from "Duplicate Line or Block" to  "Duplicate Line". I found it useful to not fully select row and copy the code.

Manipulations
CTRL+SHIFT+UP - Move  a code line(s)  above.
CTRL+SHIFT+DOWN -  Move a code line(s) below. 
CTRL+Y - Remove a code line(s).
CTRL+Z - Rollback changes.
CTRL+SHIFT +Z - Roll-forward changes.

Tabs / Navigation
CTRL+TAB / CTRL+SHIFT+TAB - Switching opened tabs and internal windows. Like in many applications.
ALT+LEFT/RIGHT - Quick switching of tabs.
CTRL+ALT+LEFT/RIGHT - Moving through the history where you have been backward/forward. Very useful, use often. Cursor move to the same place where it was.
CTRL+B - Go to place of declaring of an entity in the code (method, variable, etc.).

Searching
CTRL+N - Find class by name. You can type only capital letters.
CTRL+SHIFT+N - Find file by filename/path to filename.
CTRL+SHIFT+ALT+N - Find matching by classes and methods (functions).

CTRL+SHIFT+A - Find menu element.

CTRL+F7 -Add selected text to the search in opened document.
F3 - Search by document forward.
SHIFT+F3 -  Search by document backward.
SHIFT,  SHIFT - Search everywhere. It collects all search features.

Clipboard
You can put into clipboard several copied values.
CTRL+SHIFT+V - Paste from the history of the clipboard.

History
CTRL+E - Show the history of opened files.
CTRL+ SHIFT+ E - Show the history of edited files.

Bookmarks (Bookmarks mnemonic)
F11 - Add simple bookmark.
CTRL+F11 -  Add bookmark with name in the form of letters or number. 
SHIFT+F11 - Look all bookmarks.

VCS Management
CTRL+` - context VCS menu of current file.
CTRL+K - Commit.
CTRL+T - Update (Pull).

Рефакторинг
SHIFT+F6 - Глобальное переименование. В диалоговом меню вы увидите также галочки для установки скопа поиска. Как правило если затрагиваются другие файлы, то это показывается в другом окне для подтверждения. Как правило страюсь все переименовывать с помощью этого.
CTRL+ALT+C - Выделенное перенести в константу (переведет все найденные значения в файле при желании)
CTRL+ALT+V - Выделенное перенести в переменную
CTRL+ALT+M - Выделенное перенести в новый метод класса
CTRL+ALT+F - Выделенное перенести в свойство класса

Другое
CTRL+SHIFT+X - Открыть командную строку (Там же можно пользовать и GIT'ом например)
CTRL+ALT+S - Настройки
CTRL+P - Показать передаваемые параметры внутри метода/фукции/класса. Когда курсор внутри скобок: $this->func(|);
CTRL+Q - Показать документ сущности

P.S. Настоятельно рекомендую использовать нативную раскладку для PhpStorm, а не для Eclipse, и т.д. Почему? Во-первых, потому что выше перечисленные методы будут либо на других местах, либо вообще не будет. Во-вторых, когда подходишь к коллеге по работе, то вы будете нервничать поняв что у него все "по дефолту".