|
|
|||||||||||||||||||||||||||||
|
Продуктивное использование PHPStormИсточник: habrahabr azverin
В процессе использования IDE иногда случайно, иногда специально находятся полезные фишки, сочетания клавиш и прочие заложенные разработчиками приятные штуки, которые никогда не оседают в памяти без регулярного их использования и всячески ускользают при чтении мануалов. Не претендуя на библию или "настольную статью программиста" я хочу поделиться полезными находками в моей любимой IDE, не скатываясь в тупую копипасту мануалов и скучных списков хоткеев, только то, что я сам использую постоянно и над чем удивляются коллеги: "о! а так можно?" Disclaimer Если ни одна из фишек описанных в статье вам была не в новинку, потрудитесь добавить хотя бы одну свою, тогда мир станет лучше, деревья зеленее… ну вы поняли. Я работаю на Mac, поэтому хот-кеи указываю в "своей" раскладке. Большинство из них будут работать простой заменой [CMD] на [CTRL] или [ALT], остальные, возможно, придется поискать на вкладке Keymap. Буду благодарен, если кто-то проверит и продублирует раскладку для WIN.
Автогенерация кодаСуществует куча рутинных задач, которые иногда выполняются самим фреймворком, а иногда требуют тупой ручной работы. PHPStorm помогает упростить некоторые [CTRL]+N, например: Создание геттеров и сеттеров (Getters & Setters) Создание PHPDoc Переназначение и реализация при наследовании (Override & Implementation)
Автоформатирование кодаКогда пишешь код сам, обычно форматирование получается само, но в ситуации, когда нужно поменять Code Style или пытаешься открыть чужой непривычно оформленный код, возникают проблемы. Можно смириться, а можно нажать [CMD] + [ALT] + L и IDE отформатирует код в соответствии с настройками (Preferences -> Project Settings -> Code Style -> PHP) По-умолчанию, нажатие хоткея форматирует файл целиком. Если выбрать область, то форматируется только selection. Если выбрать в дереве папку или весь проект, можно сразу привести в порядок всё сразу. Для каждого языка можно задать свой стиль оформления, причем для PHP также можно выбрать один из предзаданных стилей:
Подсказки (Code Completition)Важной функцией IDE является способность подсказывать названия и атрибуты методов. Особенно это важно для ООП, когда цепочки по 3-4 наследующихся класса способны запутать кого угодно. При нормальной архитектуре проекта IDE способна разобраться сама, но бывают ситуации когда она не справляется, например:
Варианты решения:
Для функций нужно писать PHPDoc с параметром @ return. Например:
Для переменных также можно указать комментарий:
Тогда ниже для $my_var будет доступны подсказки Для методов над классом можно указать PHPDoc
Если функция возвращает массив объектов
Тогда, например, в foreach становятся доступны подсказки $value->… (по полям и методам класса SomeClass). Спасибо pro100tak
Задачи (tasks)Использование систем контроля версий уже давно стало признаком хорошего тона. Но часто бывает проблема, когда работа ведется над несколькими задачами параллельно или прибегает кто-то и срочно просит исправить воооот этот баг прям-вот-щяс. Очень легко можно забыть закоммитить нужный файл или наоборот, в коммит попадают лишние файлы или изменения которых там быть не должно. Избежать этого и внести порядок в работу можно с помощью Tasks. Суть в том, что у каждой задачи есть свой Change-лист, в котором указаны файлы с изменениями и переключаясь между задачами сразу видно, с какими файлами работали по этой задаче и что нужно не забыть.
Другой положительный момент, что IDE предупреждает, если вы в рамках одной задачи начинаете править файл, уже затронутый в другой. Добавляет удобства, что при коммите в него автоматически попадают все файлы из текущего change-листа + в комментарий подставляется название задачи. Хорошо если у вас уже есть багтрекер типа Jira или Redmine, если нет, на том же GitHub есть довольно простая система баг-трекинга, также поддерживаемая PHPStorm. Это позволяет подгрузить номер, название и описание уже существующей задачи по которой вы работаете прямо в IDE, хотя ничто не мешает не пользуясь трекером создавать произвольные change-листы.
FTP, деплой и автодеплойСо многими проектами работа ведется по FTP или SFTP. PHPStorm имеет удобный функционал для работы с ними. Сохранив доступы к серверу и настроив mapping появляется возможность выгружать и загружать (upload & download) файлы на сервер нажатием одного хоткея. Чтобы работало - нужно не забыть тыкнуть "use this server as default"
Почему-то для Mac не заданы хоткеи по умолчанию для этих действий, но в Keymap можно их задать (спасибо Кэп). Я поставил следующие: Но об этом всём не стоило бы и писать, если бы не функция автодеплой. Поставив в настройках (Preferences -> Project Settings -> Deployment -> Options) пункт "Upload changed files automatically to default server" в любой режим кроме Never + галочку Upload external changes мы получаем автоматическую синхронизацию всех изменений. Тут сказывается удобство того, что PHPStorm при нажатии [CMD] + S сохраняет сразу все файлы, т.к в результате процедура сохранения и аплоада совмещаются в одну. Теперь можно не заботится всё ли загружено и ничего ли не забыто.
КонсольМногие фреймворки используют консоль для быстрого выполнения частых действий. Для Symfony, Zend и других популярных фреймворков PHPStorm поддерживает подсказки и автодополнение консольных команд в Command Line Tools Console [CMD] + [SHIFT] + X Но ничто не мешает сделать такое же и для своего проекта или частоупотребляемых команд UNIX или GIT, для этого нужно выбрать исполняемый файл и создать специальный XML файл вида:
Подробное описание как это делается вот тут: devnet.jetbrains.net/docs/DOC-1230
Разновидности поиска[CMD] + N - Find by Class Name Поиск по имени класса. Удобно в больших проектах, когда всё зарыто вглубь директорий или просто неизвестно где находится. Убойности добавляет "умный поиск", т.к. ищется как по части названия класса, так и по первым буквам, например SomeVeryLongClass будет найден по "SVLC". Учитывает регистр букв, будьте внимательны.
UPD: "Умный поиск" разработчики называют Camel's Hump. Кстати в настройках можно сделать чтобы выделение слов, а также перемещение осуществлялось не целиком (до пробела), а именно по по словам (до заглавной буквы). [CMD] + [SHIFT] + N - Find by File Name Поиск по имени файла. Аналогично поиску по имени класса использует "умный поиск". UPD: Для нахождения файла по вложенности можно использовать слеш: some/deep/dir/with/file.txt найдется по "s/d/d/w/f", [CMD] + [SHIFT] + [ALT] + N - Find Symbol Поиск любой функции/метода и констант, очень удобно, когда точно помнишь имя метода, а класс нет. [ALT] + [F7] - Find Usages В момент когда курсор находится на имени класса или метода нажатие хоткея позволяет найти все использования в проекте или определенной части (Scope). Есть вариант [CTRL] + [ALT] + [F7] - тот же поиск по использованиям, но в виде контекстного меню. [CTRL] + [SHIFT] + F - Find in Path Поиск произвольной фразы по файлам проекта. При рефакторинге обычно хорошо дополняет Find Usages. Не стоило бы писать о "просто поиске", если бы не возможность ограничить директорию в котором будут искаться нужные штуки, или настроить Scope. Scope позволяет гибко настроить и сохранить область поиска, для использования в дальнейшем. Можно выкинуть из поиска, например, файлы фреймворка или сторонние либы.
Убрать рамку с подписями вкладокВ нижнем левом углу есть кнопка, позволяющая убрать рамки для боковых и нижних вкладок. Сами вкладки можно открывать по сочетаниям [CMD] + 0-9, но некоторые вкладки не имеют цифры. В таком случае поможет быстрое двойное нажатие (даблклик) [CMD], которое на время удержания показывает рамку с кнопками, в которые можно тыкать мышой.
Productivity GuideВ меню Help->Productivity Guide есть возможность посмотреть небольшую статистику про себя, а также список фич со статистикой их использования. Спасибо nxn
Сравнение двух файловПри выделении двух произвольных файлов в менеджере файлов появляется пункт "Compare Two Files", который показывает их в встроенном дифф-вьювере и позволяет переносить изменения из одного файла в другой. Спасибо pro100tak
Метки в проектеС помощью [CTRL] + [SHIFT] + 0...9 можно оставлять метки. Вернуться на метку можно с помощью [CTRL] + 0...9. Работает в контексте всего проекта.
Интересные хоткеи из комментариев[CMD] + [ALT] + T (WIN: CTRL + ALT + T) [CMD] + [F12] (WIN: CTRL + F12) [ALT] + [Home] - быстрая навигация по пути к файлам. [CMD] + [SHIFT] + A - поиск по командам IDE Ссылки по теме
|
|