Софт-Портал

Phpdoc Phpstorm

Рейтинг: 5.0/5.0 (21 проголосовавших)

Категория: Windows

Описание

Продуктивное использование PhpStorm

Продуктивное использование PhpStorm Коротко о главном

Речь в статье идет о последней на момент ее написания версии, восьмой. Так же я использую PhpStorm на Windows, поэтому и все хоткеи буду писать с упоминанием Ctrl и Alt. Если у вас Mac, скорее всего вместо них можно жать CMD, либо придется порыться во вкладке Keymap настроек.

Автогенерация кода

Довольно банальная функция, но многие о ней и не подозревают. Поставьте курсор внутрь класса и нажмите Alt + Insert. Появится меню автогенерации кода. Можно создавать конструкторы, геттеры/сеттеры (сразу для нескольких выбранных вами свойств), PHPDoc блоки, а так же реализовывать методы интерфейсов или переопределять методы родительского класса.

Очень удобно работает реализация/переопределение методов. Автоматически именуются параметры и создается PHPDoc. Так же можно по-быстрому вызвать только переопределение методов (Ctrl + O ) или только реализацию иинтерфейсов (Ctrl + I ).

Понажимайте Alt + Enter в различных положениях курсора. Например, на неимпортированном классе, это позволит автоматически импортировать его. А вообще это мега сочетание, которое умеет очень многое.

Форматирование кода

Совсем очевидная фича, но некоторые о ней не знают. По нажатию Ctrl + Alt + L осуществляется автоформатирование текущего файла, либо выбранного фрагмета кода. Если в дереве проекта выбрать файл и нажать то же сочетание, то он полностью будет отформатирован. Можно так же выбрать папку и будет отформатирована все файлы в этой папке.

Рефакторинг

PhpStorm умеет кучу всего: выделять одинаковые участки кода в метод (Extract -> Method), выделять участки кода в переменную (Extract -> Variable), выделять поля и константы. Просто покапайтесь в разделе Refactoring. Или есть прекрасная статья на эту тему .

Переключение проектов

Стандартный механизм переключения проектов не слишком удобен. Я советую использовать Frame Switcher для быстрого переключения между проектами.

Задачи

Если вы еще не пользуетесь системой контроля версий в PhpStorm, то самое время начать. Именно потому, что в этой IDE реализована потрясающая система разбиения текущих изменений на задачи (tasks).

Допустим, вы работаете над неким функционалом, уже изменен десяток файлов и идет второй день работы без коммитов. Прибегает манагер и просит "нувотпрямщаспоправьэтуфигню". И тут начинаются неудобства. Нужно запомнить какие изменения относятся к вашей основной задаче, а какие относятся к этой мелкой правке, чтобы правильно разбить изменения на два коммита.

PhpStorm решает эту проблему за вас. Все что вам нужно, создать отдельную задачу (Task) или Changelist (не понял в чем между ними принципиальная разница, если кто-то объяснит, опубликую), назначить его активным и сделать быструю правку. При этом вы увидите, что PhpStorm отнесет изменения в файлах к вашей активной задаче. А если вы случайно затроните файлы из другой параллельной задачи, то увидите предупреждение.

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

Быстрое открытие файла аля SublimeText

По Ctrl + N можно быстро открыть файл с нужным классом, а по Shift + Ctrl + N вообще любой файл по имени. А через Ctrl + Shift + Alt + N можно найти любой "символ", т.е. переменную, функцию и т.п.

Метки в проекте

Нажимая Ctrl + Shift + 0..9 можно оставлять в проекте метки. Чтобы быстро перейти к какой-либо метке нужно нажать Ctrl + 0..9 (номер метки).

Быстрое обертывание

Выделив фрагмент кода и нажав Ctrl + Alt + T можно быстро обернуть блок в if-else или какой-либо цикл. Так же при редактировании HTML срабатывает Ctrl + Alt + Enter. Это обертывание с помощью Emmet.

Сравнение двух файлов

PhpStorm имеет очень няшное окно diif-а, т.е. сравнения двух файлов. Если в дереве проекта выделить пару файлов и нажать Ctrl + D. то можно сравнить содержимое этих двух файлов.

Список использований

Не уверены, используется ли где-то ваш метод? Поставьте на него курсор и нажмите Ctrl + F7. Появится список использований метода, переменной или другого "символа". Можно использовать Ctrl + Alt + F7. тогда список появится в виде контекстного меню, что иногда чуть удобнее.

Быстрый переход к объявлению

Все вкурсе, что по Ctrl + клик можно перейти к определению "символа". Но по нажатию Ctrl + Alt + Left можно вернуться назад. А по Ctrl + Shift + Backspace можно вернуться к последнему месту редактирования кода, если вы вдруг заблудились в длинном скролле.

Мульти буфер обмена

Как часто бывало, что скопированное в буфер терялось из-за еще одного копирования? PhpStorm из коробки запоминает все что было в буфере и можно использовать Ctrl + Shift + V для вставки прошлых значений.

Автогенерация спрайтов

Автоматическая генерация CSS спрайтов не доступна из коробки, однако настраивается за 15 минут без особых проблем. В итоге вы получите полностью автоматическое создание PNG спрайтов с готовыми CSS/LESS стилями.

Другие статьи, обзоры программ, новости

Полезные возможности PhpStorm и настройка горячих клавиш

Полезные возможности PhpStorm и настройка горячих клавиш

Собственные горячие клавиши назначайте через Settings (Preferences) -> Keymap ):

  • CTRL + ALT + Space — показать подсказку
  • Добавить отступ (табуляцию) — Tab
  • Убрать отступ (табуляцию) — SHIFT + Tab
  • CMD + [fn + F12] — аналог Structure (структура текущего класса), только во всплывающем окне
Метки (полезно пометить какую-то строку в файле, чтобы потом к ней перейти)
  • CTRL + SHIFT + (0. 9) — Установить/сбросить метку в проекте
  • CTRL + (0. 9) — перейти к метке (у меня 1,2,3,4 заняты под рабочие столы mac, поэтому ставлю с 5)
Поиск
  • CMD + F — поиск в текущем файле
  • CTRL + SHIFT + F — поиск по файлам (можно указать в каких папках искать)
  • CMD + N — поиск по имени класса
  • CMD + SHIFT + N — поиск по имени файла
  • CMD + SHIFT + ALT + N — поиск любой функции/метода и констант (полезно, если помните название метода, но не помните класс, в котором он записан)
  • ALT + [fn+F7] — find usages
TODO (в коде в комментариях удобно писать //todo. )
  • Alt + 6 — открыть окно TODO
  • Ctrl + Alt + Up (Down) — перемещаться по TODO
Сравнение двух файлов
  • Выделить 2 файла и в выпадающем меню Compare Two Files
Deployment FTP

Назначьте CTRL + U — для Upload to Default Server

Назначьте CTRL + D — для Download from Default Server

Командная строка в PhpStorm

Поддержка выполнения консольных команд через Ctrl+Shift+X появилась уже несколько EAP-билдов назад, но информации по использованию чего-либо, кроме консолей Zend Framework или Symfony до недавнего времени не было.

Оказалось, что подключить свои команды несложно.

Если команда есть в path в виде .bat или .sh. то достаточно её добавить через Settings > Command Line Tool Support > Add > Custom Framework. Там можно поступить, например, с pear .

Для того, чтобы получить поддержку Yii, после добавления команды $PhpExecutable$ путь/до/yiic.php необходимо открыть XML-ку с определением команд и добавить внутри <framework> примерно следующее:

После этого IDE начнёт подсказывать варианты команд. Чтобы получить более подробные подсказки, необходимо лучше описать команды .

Комментарии RSS по email OK

Как у Storm с поддержкой mercurial?

Еще бы для netbeans так. Кстати, как у phpstorm с phpdoc. Помню плохо было, что-то изменилось ?

Поддерживается. Надо из списка плагинов поставить hg4idea .

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

Вполне удобно. Если использовать в описании команд $Prompt$. то вылезет отдельное окошко для ввода параметра.

А вообще я бы предпочёл реализацию консоли не в виде окошка по Ctrl+Shift+X. а в виде отдельной панельки снизу http://getfirebug.com/img/cl/screenCL-autocomplete.gif

Дополнения кода phpstorm (Code Completition)

Заметки WEB-разработчика Дополнения кода phpstorm (Code Completition)

Важной функцией IDE является способность подсказывать названия и атрибуты методов. Особенно это важно для ООП, когда цепочки по 3-4 наследующихся класса способны запутать кого угодно. При нормальной архитектуре проекта IDE способна разобраться сама, иначе подсказки нужно устанавливать принудительно по правилам PHPDoc .

В каких случаях ide требуется объяснить что куда:

  • Функция может вернуть несколько типов
  • Объект является элементом массива
    $var = $arr[‘object’];
  • Класс 'B’ extends ‘A’. В классе 'A’ метод foo() возвращает $this, в классе 'B’ реализация метода отсутствует. Вызвав из объекта ‘B’ метод foo() IDE будет думать что возвращен был объект A.
  • При нативной шаблонизации средствами PHP. Где-то в дебрях системы в шаблон передается переменная $some, но внутри шаблона об этом неизвестно.

Для функций нужно писать PHPDoc с параметром @ return. Например:

Для переменных также можно указать комментарий:


Тогда ниже для $my_var будет доступны подсказки

Для методов над классом можно указать PHPDoc

Если функция возвращает массив объектов


Тогда, например, в foreach становятся доступны подсказки $value->… (по полям и методам класса SomeClass).

Мануал phpStorm на русском

Шаблоны переменных

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

Шаблон переменной является строкой, которая Перевод мануала PhpStorm начинается со знака доллара, за которым следует имя переменной. Имя переменной может быть заключено в скобки. Например: $MyVariable или $. Русское руководство PhpStorm

Предопределенные шаблоны переменных

PhpStorm поставляется со следующим набором предопределенных переменных: Перевод руководства PhpStorm

PhpStorm предоставляет набор дополнительных переменных для включения в шаблоны PHP. Например, шаблоны часто повторяющихся фрагментов, которые могут быть включены в другие шаблоны PHP-файлов (PHP file template). Встроенные шаблоны PHP (PHP include templates) предназначены для генерации заголовков файлов и комментарии PHPDoc документации. Эти переменные доступны во встроенных шаблонах Перевод мануала PhpStorm PHP: Перевод мануала PhpStorm Документация PhpStorm по русски

  • $ - имя класса, поля или функции (метода), для которых PHPDoc комментарий будет генерироваться. Документация PhpStorm по русски
  • $ - полное имя (без косой черты) Документация PhpStorm по русски класса или PhpStorm поля пространства имен. Перевод мануала PhpStorm
  • $ - имя класса, где Русский мануал PhpStorm определено поле для генерации PHPDoc комментария. Русский мануал PhpStorm
  • $ - получает значение static. если функция (метод) или поле для генерации коментария являются статическими. В противном случае выводит пустое значение.
  • $ - ожидает возвращения функцией (методом) значения для генерации комментария. Если возвращенный тип не может быть опознан системами анализа, возвращает пустое значение.
  • $ - - a documentation comment for parameters. Evaluates to a set of lines @param type name. If the function to generate comments for does not contain any parameters, the variable evaluates to empty content.
  • $ - a documentation comment for exceptions. Evaluates to a set of lines @throws type. If the function to generate comments for does not throw any exceptions, the variable evaluates to empty content.
  • $ - a dollar character ($). The variable evaluates to a plain dollar character ($) and is used when you need to escape this symbol so it is not treated as a prefix of a variable.
  • $ - indicated the position of the caret after generating and adding the comment.

Документация PhpStorm по русски Примечание. Переменная $ вычисляется только тогда, когда генерируются PHPDoc Документация PhpStorm по русски комментарии и вставляются в создаваемый файл. When a PHPDoc comment is created through Code | Generate | PHPDoc block, multiple selection of functions or methods is available so documentation comments can be created to several classes, functions, methods, or fields. As a result, PhpStorm cannot "choose" the block to apply the $ variable in, therefore in this case the $ variable is ignored. Перевод мануала PhpStorm

Пользовательские шаблоны переменных. Русский мануал PhpStorm

В дополнение к предопределенным шаблонам, можно создавать пользовательские шаблоны переменных. При необходимости, вы можете определить значения пользовательских переменных прямо в шаблоне с помощью Русское руководство PhpStorm VTL - директивы Перевод руководства PhpStorm #set. Подробнее об этом в статье "Директива #set " Русское руководство PhpStorm

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

Нет комментариев. Ваш будет первым!

PhpStorm 10

PhpStorm 10.0.1 Тип издания: OS X Software
Релиз состоялся: 11 ноября 2015
Поддерживаемая ОС: OS X 10.5 +
Разработчик: JetBrains
Официальный сайт: ссылка

Язык интерфейса: Английский

Лечение: в комплекте
Тип лекарства: сервер лицензирования

Системные требования:
• Mac OS X 10.5 или более новая
• 1 GB RAM minimum
• 2 GB RAM recommended
• 1024x768 minimum screen resolution

Описание:
JetBrains PhpStorm представляет coбoй легкий и удобный редактор PHP, который максимально повысит вашу производительность. Редактор отлично понимает код, дает удобные подсказки, быструю навигацию и отслеживает ошибки "на лету". IDE всегда готова помочь Вам собрать ваш код, запустить юнит-тесты и обеспечить визуальную отладку. PhpStorm поддерживает PHP, CSS, HTML, XML, YAML, javascript - все, что нужно для того, что бы разработать свой web-сайт.
В графическом PHP-отладчике JetBrains PhpStorm реализованы условные точки останова, отслеживание значений, автоматизированный вход в отладку отдельных процедур. Для тестирования приложений предлагается среда PhpUnit и графический интерфейс для запуска тестов.
Релиз PhpStorm 8 упрощает использование многих популярных и активно развивающихся веб-технологий для бэкэнд- и фронтэнд-разработки на протяжении всего жизненного цикла — от прототипирования до развертывания и поддержки.

Как один из ключевых инструментов PHP разработчика, PhpStorm постоянно развивается и оттачивает встроенные инструменты, чтобы пользователи могли следовать последним тенденциям веб-разработок (а иногда и задавать их).

Поддержка языка PHP

Мощь языковых вставок
Функционал языковых вставок в PHP-литералы был значительно переработан: теперь поддерживаются сложные выражения, включая возможность замены динамических частей на значения.

Это особенно важно для работы с SQL-запросами в вашем проекте, что приносит значительный рост продуктивности при написании и тестировании запросов к базам данных.

Следуйте за эволюцией PHP
Свежий релиз PHP 5.6, ставший стабильным совсем недавно, уже полностью поддержан в PhpStorm, включая возведение в степень, use const, use function, постоянные выражения, variadic functions, распаковку аргументов и многие другие языковые функции.

Со всеми внедренными языковыми функциями не осталось причин не обновлять ваш проект до последней версии PHP.

Следование PSR-0/PSR-4 стандартам о корне пространства имен
Следовать PSR-0/PSR-4 стандартам кода с PhpStorm теперь еще проще благодаря тому, что новая версия включает поддержку исходных и тестовых директорий для PHP (Source & Test directories) с сопоставлением структуры проекта и пространства имен (по стандарту PSR-0); может определять PSR-0 структуру нового проекта, или поддержать структуру при создании нового класса или рефакторингах; а также предоставляет различные инспекции кода.

Почуствуйте разницу с изменениями в каждой подсистеме
С каждой новой версией PhpStorm переработке подвергаются многие подсистемы продукта. На этот раз мы рады представить новые intentions (желаемые действия) и инспекции кода, улучшения форматирования, вывода типов (включая вывод, основанный на ArrayAccess/Iterator return type), поддержку Markdown в блоках PHPDoc и понимание унифицированных многоуровневых массивов.

Шаблоны Blade
Активно развивающийся движок шаблонов Blade (представленный во фреймворке Laravel) полностью поддерживается, включая:
• подсветку синтаксиса языка Blade в файлах шаблонов;
• автодополнение директив;
• внедрение переменных для директив for и foreach;
• Blade-специфичная навигация по проекту;
• поиск использований для шаблонов;
• настраиваемые директивы Blade.

Разработка для WordPress с помощью PhpStorm
Мы ввели полную поддержку популярной блог-платформы и CMS WordPress, о чем некоторое время назад уже писали на хабре во время программы раннего доступа. На данный момент поддержка включает:
• интеграцию PhpStorm с WordPress для существующих проектов и новых плагинов;
• настройку рабочей среды для разработки под WordPress;
• настройку стандартов оформления кода WordPress и следование им;
• поддержку хуков (включая автодополнение для параметров регистрирующих функций; навигацию от функций, регистрирующих хуки, к вызовам хуков и другие функции);
• поиск документации на WordPress.org прямо из редактора;
• интеграцию с инструментами командной строки WordPress WP-CLI.

Все основные PHP фреймворки поддержаны, так что обязательно попробуйте PhpStorm для работы с вашим любимым фреймворком. Сторонние плагины для дополнительной поддержки фреймворков доступны в нашем репозитории — там, к примеру, есть плагины для Symfony2, Laravel, Magento, CakePHP и др.

BDD для PHP с Behat
Следовать парадигме Behavior-Driven Development (BDD) теперь просто, ведь PhpStorm поддерживает Behat — BDD-фреймворк для PHP. Вы можете писать человекопонимаемый код тестов, описывающий поведение (и бизнес-логику) вашего приложения.

Текущая поддержка Behat включает:
• помощь в инсталляции и конфигурации Behat;
• Run Configuration для Behat (аналогично PHPUnit);
• Behat intellisense (resolve, поиск использований, автодополнение и т. д.).

Удаленные PHP-интерпретаторы
Использование удаленного PHP-интерпретатора вместо локального позволит вам запускать приложение или PHP-инструменты в окружении, близком к production, будь то реальный сервер или виртуальная машина, созданная с помощью Vagrant или Doсker. Данный подход позволит вам убедиться, что развертывание приложения на production не принесет неприятных неожиданностей.

Как только удаленный PHP-интерпретатор настроен (с помощью SSH аутентификационных данных, настроек Vagrant или развертывания), вы можете использовать его для запуска/отладки вашего приложения, а также удаленно запускать инструменты тестирования (такие как PHPUnit и Behat). PhpStorm будет обращаться с данным удаленным интерпретатором примерно так же, как и с локальным.

Инструменты для фронтэнд-разработки
PhpStorm включает в себя все функции WebStorm (так что все фичи WebStorm 8 и текущие фичи WebStorm 9 EAP) включены (некоторые в виде бесплатных плагинов). Мы рады представить вам обновленный набор популярных инструментов для веб-разработки:
• расширенная поддержка AngularJS;
• spy-js, инструмент трассировки для JavaScript и Node.js;
• Grunt, средство запуска задач JavaScript;
• интеграция с PhoneGap/Cordova;
• Bower, gulp.js, фреймворк тесторования CucumberJS, шаблоны Postfix для JavaScript и др.

Платформа IntelliJ
Со стороны платформы IntelliJ, лежащей в основе PhpStorm, также привнесены многие интересные изменения.

Множественные курсоры и множественное выделение
PhpStorm 8 включает одну из самых запрашиваемых фич в нашем баг-трекере — множественные курсоры и множественное выделение (Multiple Cursors and Selections).

Скажем только, что расставить курсоры можно с помощью Alt+Click; добавить следующее совпадение в выделение: Alt+J для Windows и Ctrl-G для Mac; удалить совпадение из выделения: Alt+Shift+J для Windows и Ctrl-Shift-G для Mac; удалить все выделения и курсоры: Esc. А как это работает на практике — вы можете увидеть справа.

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

С PhpStorm 8 быстрые изменения в одиночных файлах возможны: просто откройте любой файл с помощью действия Open на экране приветствия (Welcome) PhpStorm. Опыт работы с IDE будет вам знакомым — с подсветкой кода, инспекциями, автодополнением кода и даже отладкой и развертыванием.

Кроме того, вам скорее всего понравится включенный по умолчанию плагин Scratch, позволяющий создавать временные файлы без сохранения на диск (Ctrl+Alt+Shift+Ins на Windows, Cmd-Shift-N на Mac).

10.0.1 Build 143.382
November 11th, 2015
- Focused on various bug fixes from the web & IntelliJ platform sides.

New in version 10 Build 143.381.48 (November 2nd, 2015)
Distribution packages:
Bug - WI-29225 - Add bundled tools.jar to the classpath in phpstorm.sh
Injections in PHP:
Bug - WI-28867 - Persistent language injection doesn't work for strings without assignment
Bug - WI-25707 - Custom SQL parameters with double brackets (MySQL)
PHP Completion:
Feature - WI-17528 - Code completion when overriding class properties with new default values
Feature - WI-9210 - Name suggestion: foreach value name by foreach array name
Feature - WI-8035 - Getters and setters autocomplete proposal like in IntelliJ
Feature - WI-16918 - Autocomplete method name and signature when overriding parent
Feature - WI-6223 - Complete parens after function-like constructs (isset etc)
Feature - WI-28812 - Provide completion for methods when implementing interface
Bug - WI-28579 - Unnecessary class import when autocompleting class constant
Bug - WI-29057 - '$' is not completed for global variables in some cases
Bug - WI-18070 - No autocomplete inside list() statement
Bug - WI-29209 - No function or method autocompletion in foreach
Bug - WI-7050 - PHP: code completion: suggestions after "parent::" could be improved
Bug - WI-13510 - Private Trait Method autocomplete is not working
Bug - WI-28811 - Function keyword inserted twice if function name starts with f
Bug - WI-28810 - Completion should take into account final modifier
Bug - WI-28858 - Getters and setters shouldn't be suggested for constants
Bug - WI-28859 - Getters and setters completion shouldn't suggest private fields of parent classes/traits
Bug - WI-28806 - Autocomplition for static class methods works incorretly
Usability - WI-22118 - No autocompletition for function and constants in namespace
Usability - WI-28862 - Remove "" from completion list after @lang
Usability - WI-28860 - Don't suggest completion for getter/setter if there is already a keyword before
Usability - WI-28861 - Provide getter/setter completion for trait
Usability - WI-28676 - Show only variables in completion for list
Usability - WI-26877 - Provide completion for possible injections after @lang
Usability - WI-29387 - Provide completion for classes that implements Throwable
Exception - WI-28889 - Remove JS in HTML from completion list
PHP Formatter:
Bug - WI-22616 - Bad Code Style "Set from. " Symfony2 or PSR1/PSR2
Bug - WI-25227 - Reformat is not keeping blank lines inside array
Bug - WI-13679 - New line in Symfony2 annotations
Bug - WI-29300 - Additional indent is inserted in PHPDoc if caret is located after ()
Bug - WI-28352 - Comment for throws tag in phpdoc is lost after updating phpdoc block
Bug - WI-28144 - Comment indention doesn't respect formatting settings
Usability:
WI-24511 - Keep comments together with return statement

и многое другое

PhpStorm IDE for PHP

PhpStorm IDE for PHP

Существует куча рутинных задач, которые иногда выполняются самим фреймворком, а иногда требуют тупой ручной работы. PHPStorm помогает упростить некоторые [CTRL]+N, например:

Создание геттеров и сеттеров (Getters & Setters)

По существующим переменным класса можно сгенерировать набор геттеров и\или сеттеров, причем в появляющемся окне можно выбрать для каких именно.

Создание PHPDoc

По сути действие аналогично тому, как если перед существующим методом начать писать

и нажать Enter. Можно выбрать одну или несколько функций и на основании атрибутов и содержимого будет сформирован Doc Block.

Переназначение и реализация при наследовании (Override & Implementation) При создании класса потомка или реализации абстрактных методов, чтобы не допустить ошибку, обычно приходится лезть в класс предок и запоминать или копипастить название и атрибуты метода. Или проверять для всех ли абстрактных методов есть реализация и вспоминать что же там требуется для ArrayAccess.

Есть вариант получше:

[CMD] + I – Имплементация

[CMD] + O – Переназначение

После нажатия хоткея появляется окно где можно выбрать какие именно методы будем реализовывать. После выбора генерится соответствующий метод с соблюдением приватности и имена атрибутов, например так: public function createTable($drop = false)

Автоформатирование кода

Когда пишешь код сам, обычно форматирование получается само, но в ситуации, когда нужно поменять Code Style или пытаешься открыть чужой непривычно оформленный код, возникают проблемы. Можно смириться, а можно нажать [CMD] + [ALT] + L и IDE отформатирует код в соответствии с настройками (Preferences > Project Settings > Code Style > PHP)

Подсказки (Code Completition)

Для функций нужно писать PHPDoc с параметром @ return. Например:

Для переменных также можно указать комментарий:

Тогда ниже для $my_var будет доступны подсказки

Для методов над классом можно указать PHPDoc

Если функция возвращает массив объектов

Консоль

Многие фреймворки используют консоль для быстрого выполнения частых действий. Для Symfony, Zend и других популярных фреймворков PHPStorm поддерживает подсказки и автодополнение консольных команд в Command Line Tools Console [CMD] + [SHIFT] + X

Разновидности поиска [CMD] + N – Find by Class Name

Поиск по имени класса. Удобно в больших проектах, когда всё зарыто вглубь директорий или просто неизвестно где находится. Убойности добавляет «умный поиск», т.к. ищется как по части названия класса, так и по первым буквам, например SomeVeryLongClass будет найден по «SVLC». Учитывает регистр букв, будьте внимательны.

UPD: «Умный поиск» разработчики называют Camel's Hump. Кстати в настройках можно сделать чтобы выделение слов, а также перемещение осуществлялось не целиком (до пробела), а именно по по словам (до заглавной буквы). Спасибо, yujin1st

[CMD] + [SHIFT] + N – Find by File Name

Поиск по имени файла. Аналогично поиску по имени класса использует «умный поиск».

UPD: Для нахождения файла по вложенности можно использовать слеш: some/deep/dir/with/file.txt найдется по «s/d/d/w/f», спасибо develop7

[CMD] + [SHIFT] + [ALT] + N – Find Symbol

Поиск любой функции/метода и констант, очень удобно, когда точно помнишь имя метода, а класс нет. Спасибо conf

[ALT] + [F7] – Find Usages

В момент когда курсор находится на имени класса или метода нажатие хоткея позволяет найти все использования в проекте или определенной части (Scope).

Есть вариант [CTRL] + [ALT] + [F7] — тот же поиск по использованиям, но в виде контекстного меню. Спасибо iPavel

[CTRL] + [SHIFT] + F – Find in Path

Поиск произвольной фразы по файлам проекта. При рефакторинге обычно хорошо дополняет Find Usages.

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

phpstorm license key

Продуктивное использование PHPStorm, HTML, XML, DHTML, Интернет-технологии, статьи на

Продуктивное использование PHPStorm

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

Не претендуя на библию или "настольную статью программиста" я хочу поделиться полезными находками в моей любимой IDE, не скатываясь в тупую копипасту мануалов и скучных списков хоткеев, только то, что я сам использую постоянно и над чем удивляются коллеги: "о! а так можно?"

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

Я работаю на Mac, поэтому хот-кеи указываю в "своей" раскладке. Большинство из них будут работать простой заменой [CMD] на [CTRL] или [ALT], остальные, возможно, придется поискать на вкладке Keymap. Буду благодарен, если кто-то проверит и продублирует раскладку для WIN.

Автогенерация кода

Существует куча рутинных задач, которые иногда выполняются самим фреймворком, а иногда требуют тупой ручной работы. PHPStorm помогает упростить некоторые [CTRL]+N. например:

Создание геттеров и сеттеров (Getters & Setters)
По существующим переменным класса можно сгенерировать набор геттеров иили сеттеров, причем в появляющемся окне можно выбрать для каких именно.

Создание PHPDoc
По сути действие аналогично тому, как если перед существующим методом начать писать /** и нажать Enter. Можно выбрать одну или несколько функций и на основании атрибутов и содержимого будет сформирован Doc Block.

Переназначение и реализация при наследовании (Override & Implementation)
При создании класса потомка или реализации абстрактных методов, чтобы не допустить ошибку, обычно приходится лезть в класс предок и запоминать или копипастить название и атрибуты метода. Или проверять для всех ли абстрактных методов есть реализация и вспоминать что же там требуется для ArrayAccess. Есть вариант получше:
[CMD] + I - Имплементация
[CMD] + O - Переназначение
После нажатия хоткея появляется окно где можно выбрать какие именно методы будем реализовывать. После выбора генерится соответствующий метод с соблюдением приватности и имена атрибутов, например так:

Автоформатирование кода

Когда пишешь код сам, обычно форматирование получается само, но в ситуации, когда нужно поменять Code Style или пытаешься открыть чужой непривычно оформленный код, возникают проблемы. Можно смириться, а можно нажать [CMD] + [ALT] + L и IDE отформатирует код в соответствии с настройками (Preferences -> Project Settings -> Code Style -> PHP)

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

Для каждого языка можно задать свой стиль оформления, причем для PHP также можно выбрать один из предзаданных стилей:
  • PEAR
  • Zend
  • Symfony
  • Drupal
  • PSR1PSR2

Подсказки (Code Completition)

Важной функцией IDE является способность подсказывать названия и атрибуты методов. Особенно это важно для ООП, когда цепочки по 3-4 наследующихся класса способны запутать кого угодно.

При нормальной архитектуре проекта IDE способна разобраться сама, но бывают ситуации когда она не справляется, например:
  • Функция может вернуть несколько типов
  • Объект является элементом массива
    $var = $arr["object"];
  • Класс B" extends "A". В классе A" метод foo() возвращает $this, в классе B" реализация метода отсутствует. Вызвав из объекта "B" метод foo() IDE будет думать что возвращен был объект A.
  • При нативной шаблонизации средствами PHP. Где-то в дебрях системы в шаблон передается переменная $some, но внутри шаблона об этом неизвестно.

Для функций нужно писать 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 можно их задать (спасибо Кэп). Я поставил следующие:
• Upload to Default Server: [CTRL] + U
• Download from Default Server: [CTRL] + D
(привел их для удобства поиска в 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 файл вида:

Разновидности поиска

[CMD] + N - Find by Class Name

Поиск по имени класса. Удобно в больших проектах, когда всё зарыто вглубь директорий или просто неизвестно где находится. Убойности добавляет "умный поиск", т.к. ищется как по части названия класса, так и по первым буквам, например SomeVeryLongClass будет найден по "SVLC". Учитывает регистр букв, будьте внимательны.

UPD: "Умный поиск" разработчики называют Camels 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)
Окружение выделения предзаданными штуками, типа тегов или if-else, в зависимости от контекста.

[CMD] + [F12] (WIN: CTRL + F12)
Структура текущего класса с поиском и опциональным отображением унаследованных членов
Аналог вкладки Structure, только во всплывающем окне.

[CMD] + [SHIFT] + A - поиск по командам IDE