Как настроить phpstorm под себя

Базовые фишки phpStorm, которыми я пользуюсь каждый день

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

Редактор

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

  1. Часто в битриксе приходится видеть кашу из html/js/php (а иногда даже sql кода)? Причем активно в файле может присутствовать jquery, а php код местами написан с использованием альтернативного синтаксиса управляющих структур? Тогда вы оцените, как редактор отлично расправляется с этой кашей! Также он умеет смешивать языки, например, когда вы генерируете какой-то js или html код с помощью php, то в генерируемом фрагменте будет подсветка синтаксиса, а также помощник по составлению языковых вставок.
  2. Автокомплит. Он просто работает, и все. По всевозможным (немагическим) функциям проекта. phpStorm сканирует все файлы вашего проекта, запоминает все классы и методы, функции, переменные, константы. Но с некоторыми методами может быть беда. Например — всевозможные битриксовые ::GetList(), для которых автокомплит не работает (связано с кривой реализацией в ядре). Однако это можно очень легко исправить, подключив к проекту содержимое репозитория matiaspub/bxApiDocs как отдельную библиотеку: File — Settings — Project Settings — PHP и в Include Path добавляем путь к папке modules. Библиотека содержит все ядро целиком для редакции кластера с фиксами, позволяющими использовать автокомплит нормально (тут есть один минус — если у вас в проекте индексируется ядро. а оно у меня индексируется. то при попытке перейти к просмотру кода метода возникает проблема двойной имплементации, и можно случайно перейти в код этой библиотеки вместо настоящего кода ядра)
  3. Сниппеты. Особо крутого тут ничего нет, сниппеты они итак везде есть. Но этот пункт я выделил не случайно. Для шторма и эклипса есть набор сниппетов, описывающих дефолтные компоненты битрикс. Забрать можно тут. Иногда бывает удобно.
  4. Статический анализ кода. Всегда подсвечиваются явные ошибки в коде. Ошибки видно как в коде, так и в полосе прокрутки — если там есть красные кусочки — это первое, что вам нужно посмотреть перед тем как делать коммит. Кстати, иногда раздражает, что он подсвечивает гигантские статические вызовы ::GetList, говоря о том, что метод используется в статическом контексте, тогда как не является статическим (и правильно делает, что подсвечивает), но можно гибко настроить статический анализ и какие-то отдельные инспекции отключить (но я не рекомендую этого делать).
  5. Поддержка языковых конструкций вплоть до последней версии языка, поддержка Emmet (он же бывший Zen Coding), поддержка js библиотек, css и пр.
Читайте также:  Почему не работает процессор intel

К минусам редактора могу отнести некоторую тормознутость.
Бывают глюки, при которых невозможно по неведомой причине сменить кодировку файла (очень редко). Иногда бывает глюк, что убираешь какую-то кавычку в строке, шторм сразу же меняет подсветку дальнейшего кода, но если поставить кавычку обратно, то он может предыдущую подсветку не сменить.
Еще мне откровенно не хватало minimap файла после Sublime Text, но как оказалось — есть плагинчик, называется CodeGlance.
Еще, к сожалению пока не могу найти, как сделать автокомплит по произвольным строкам (ключи массива например) 🙁

У вас есть почти мгновенный поиск по всему проекту. Если хотите найти абсолютно любую строку — жмете Ctrl+Shift+F — в диалоговом окне вводите нужную строку, и IDE находит вам все вхождения данный строки в проекте. Эдакий аналог grep, только интереснее — в результатах поиска IDE классифицирует найденное вхождение строки, указывает в каких файлах и в какой строке, сколько раз встречается искомая подстрока.

Но не всегда удобно искать именно строку. Часто мы знаем, что ищем именно класс или функцию, или какую-либо другую сущность в понятии phpStorm. Для поиска везде и вся подобных сущностей существует хоткей Shift*2 — всплывающее окно поможет быстро перейти к какой-либо сущности.

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

Кроме упомянутых выше возможностей поиска, можно удобно ориентироваться внутри открытого большого файла. Иногда бывают ситуации, когда нужно отредактировать какой-то кусок кода, перейти к другому в этом же файле, пролистав глубоко вниз, а затем вернуться обратно. Крутить колесо — долго и муторно. Поэтому можно вернуться к предыдущему редактируемому куску хоткеем Ctrl+Alt+Shift+вверх или вниз. Также есть GUI стрелка, которую можно вызвать, кликнув по маркеру, который добавляется напротив отредактированной строки — появится контекстное меню встроенной системы контроля изменений phpStorm, где кликом по стрелке можно перейти к отредактированным областям
Крайне удобной для меня оказалась возможность мгновенного перехода к определению сущности, если зажав ctrl кликнуть по ней в редакторе — супер удобно! Если у сущности определен phpDoc комментарий, то можно просмотреть его через ctrl+Q, опять же когда курсор мыши над сущностью. Поэтому коллеги — обязательно комментируйте все свои наработки с помощью phpDoc — это совсем не сложно, тогда как всем остальным это может сильно упростить жизнь.

Читайте также:  Как починить швейную машинку своими руками петляет строчка

Кстати о phpDoc — есть его полная поддержка. После написания функции или метода, например, достаточно написать над функцией строку /** и нажать tab — основной блок для phpDoc комментария будет сгенерирован. Вам нужно будет только добавить описание для вашей сущности и задать типы переменных (в случае с функциями). В случае изменения функции, ее параметров или чего либо, что могло бы повлиять на phpDoc — редактор подсветит блок комментария и предложит обновить его.

Вообще говоря — phpStorm всегда будет помогать вам, подсвечивая или подчеркивая какие-то странные на его взгляд моменты. Лучше обращать на них внимание и следовать рекомендациям.

Вернемся к навигации. Введя простой хоткей Ctrl+L можно быстро перейти к определенной строке и символу в документе. Нужно ввести номер строки и номер символа (если надо) через двоеточие.

Есть еще одна крутая вещь — навигатор по структуре файла. Если файл структурирован (html/xml, css или php класс, например), то такой файл можно просмотреть в виде древовидной структуры. Это крайне полезно при разработке классов, т.к. клик по названию метода в этом дереве производит быстрой переход к методу, да и наглядно видно. какие методы с какими данными и в каком контексте работают.

Аналогичное дерево можно вызвать во всплывающем окне над редактором с помощью ctrl+f12, а чтобы добавить его в левую панель, нужно зайти в меню View -> Tool Windows -> Structure

Интеграция с инструментами разработки

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

Куда ж без него. До моего знакомства с phpStorm я активно использовал продукт Atlassian SourceTree, который по мнению множества разработчиков считается одним из лучших OpenSource продуктов в данном сегменте. Не могу ничего сказать плохого в адрес этого инструмента, он до сих пор служит мне верой и правдой, с удовольствием использую его каждый день. Но и в phpStorm есть возможность работать с репозиторием, и некоторые аспекты сделаны удобнее, чем в SourceTree. При включении интеграции с git в phpStorm появляется чейнджер веток (правый нижний угол), в тулбаре changes (ctrl+9) можно отслеживать изменения файлов, просмотреть diff для файла, оттуда же сделать коммит и push. На вкладке log этого тулбара можно просмотреть дерево коммитов

SSH консоль

Раньше пользовался Putty, теперь пользуюсь встроенной консолью в phpStorm. Для подключения к серверу нужно пройти в меню Tools -> Start SSH Session …. Появится всплывающее окно, предлагающее подключиться к одному из существующих серверов, забитых в настройках, либо сделать одноразовое подключение (к сожалению. не сохраняется, или я просто пока не знаю как его сохранить 🙁 ). Удобно, не выходя из IDE, можно работать с консолью на сервере.

Отладка

Одна из самых крутых возможностей современных php IDE — возможность отладки. Про это я тоже напишу отдельный пост. Это крайне удобная вещь — кто кодил на компиллируемых языках в IDE (например в Visual Studio, или какой-нибудь Delphi) — тот меня поймет. Можно пошагово прогнать свое приложение, выяснить как ведет себя приложение на том или ином этапе работы, поддерживаются брейкпоинты, можно просмотреть стек вызовов для каждого момента времени, просмотреть и даже подменить значение переменных! Все это очень круто и сильно ускоряет процесс отладки. Даешь бой print_r’ам и var_dump’ам! (шутка, конечно и о них забывать не стоит). Must have для php разработчика.

Также, если вы пользуетесь профилированием от xdebug, то в phpStorm встроен анализатор логов профайлера. Можно загрузить файлик в IDE, просмотреть там лог вызовов, и тут же перейти к нужным функциям, отрефакторить их и т.д. Круто!

Restful Tester

Перед началом работы с каким-то внешним API хочется попробовать предоставляемые методы вживую. Да и при отладке необходимость быстренько составить запрос с авторизацией возникает. Однако не имеет смысла писать какой-то код — можно воспользоваться соответствующими инструментами. Ранее я пользовался для этого плагином для Chrome — Postman, однако теперь нужды в нем нет, я могу сделать запрос прямо из IDE.

File watchers

Всем известно, что для клиентской оптимизации надо сжимать js и css файлы. Однако, когда процесс выкладки на продакшен сервер не налажен, приходится делать оптимизацию скриптов и стилей вручную, например, с помощью google closure compiller в онлайне или локально. Данный инструмент позволяет автоматизировать подобные процессы. Если говорить грубо — инструмент следит за определенными файлами, и как только поступают какие-то изменения в файл, он сразу же извлекает команду, которая делает какое-то действие. Например для сжатия js файлов можно настроить File Watcher’а так, чтобы при каждом изменении файла он создавал его копию с суффиксом <имя файла>.min.js, в котором будет содержаться сжатая копия файла.

На самом деле инструментов гораздо больше, чем я тут описываю. Тут тебе и vagrant для разворачивания виртуалок, и composer для добавления в проект библиотек из этого замечательного менеджера пакетов, и интеграция с PHPUnit, Behat, для организации TDD и BDD, и возможности рефакторинга, и еще многое многое другое, всего в рамках одного поста не описать. Но буду касаться иногда разных классных инструментов в последующих своих постах, т.к. есть еще много всего, о чем хотелось бы написать.

Ну и плагины

Для того, чтобы найти нужный плагин, необходимо зайти в File — Settings — IDE Settings — Plugins. На этой странице показан перечень установленных плагинов. Кнопка Browse Repositories … отправит вас в список всех возможных плагинов.

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

  1. BitrixStorm. Плагин — недоделка (к сожалению), который упрощает навигацию по проекту. После установки нужно указать директорию основного шаблона сайта проекта, и вам станут доступны быстрые переходы к компонентам и шаблонам проекта (ctrl+ЛКМ по имени компонента или шаблона). Частенько валится … (
  2. CodeGlance — добавляет minimap для файла — писал об этом выше.
  3. RegexpTester — можно не выходя из IDE проверить работу регулярки
  4. PHP Advanced AutoComplete — добавляет автокомплит для ряда функций

Источник

PhpStorm пара настроек перед началом работы

В данной статье я хочу описать несколько настроек, которые я изменил в PhpStorm для удобства работы. PhpStorm можно настроить под себя один раз, а потом использовать включенный в программу удобный экспорт/импорт настроек, с помощью которого можно переносить настройки с одного ПК на другой или сохранять их при переустановки ОС.

PhpStorm делит настройки на глобальные, которые применяться автоматически при создании нового проекта и настройки проекта, которые индивидуальные для какого либо конкретного проекта и не распространяются на другие.

Настройки проекта меняются при открытом проекте, достаточно открыть настройки (File -> Settings) и большая часть настроек будет относиться к открытому проекту.
Чтобы сделать настройку общей для IDE и применять её автоматически для всех новых проектов необходимо закрыть проект и нажать на Configure -> Settings

Замена пробелов на табуляцию

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

Чтобы PhpStorm создавал таб из табуляции, а не из 4 пробелов необходимо зайти в настройки (File -> Settings), открыть вкладку Editor -> Code Style.
Нас интересуют вкладки PHP и HTML (конечно вы можете поменять настройку и для других типов файлов). Выделяем вкладки по очереди и ставим галочку напротив пункта Use tab charater.

Мы можем сделать это настройкой проекта или настройкой для всех новых проектов. Я делаю это как настройка для всех новых проектов, для этого в выпадающем списке Scheme выбираю значение Default IDE.

Чтобы видеть табуляцию и пробелы в открытом файле заходим все в те же настройки, выбираем Editor -> General -> Appearance ставим галочку напротив Show whitespace.

Защита от перезаписи

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

PhpStorm может проверять не изменился ли файл на сервере. Открываем настройки Build, Excution, Deployment -> Deployment -> Options

В опции Warn when uploading over newer file выбираем значение Compare content и ставим галочку напротив пункта Notify of remove changes.

Теперь если мы попытаемся загрузить на сервер файл, который был изменен на сервере, пока мы работали с ним PhpStorm нас предупредит об этом.

При нажатии Merge and upload мы можем сравнить файлы и загрузить файл содержащий изменения, внесённые нами и изменения, которые появились на сервере.

В появившемся окне есть три столбца, левый это ваш файл, правый это файл на сервере, центральный — это то, что загрузится на сервер после нажатия кнопку Merge and upload

Также рекомендую изменить опцию Upload changed files automatically to the default server на значение On explicit save action (Ctrl+S)
С данной опцией будет происходить автоматическая загрузка файла на сервер при нажатии комбинации клавиш Ctrl + S

PhpStorm загружает на сервер загруженные на локальный компьютер папки

Во время работы PhpStorm я столкнулся с интересной особенностью, созданные в проекте файлы имеют приоритет на удаленными файлами (файлами сервера), что может привести к затиранию папок на сервер. Например если вы перенесли в папку проекта папку, с таким же названием как на сервере. Чтобы избежать подобного поведения заходим в настройки Build, Excution, Deployment -> Deployment -> Options и ставим галочку напротив пункта Skip external changes

Источник

Оцените статью