выравнивание кода в phpstorm
Выравнивание кода в phpstorm
Как отформатировать код в PhpStorm используя PHP CS Fixer
1. Устанавливаем PHP CS Fixer глобально:
Убедитесь, что в Вашей переменной PATH указан каталог двоичных файлов Composer-а. Размещение каталога зависит от платформы. Пример для некоторых систем Unix:
Разбирать каждое правило не буду, поскольку всё описано в официальной документации. Но на всякий случай замечу, что одни и те же правила могут иметь разные названия в StyleCI и PHP CS Fixer. Их не так уж и много, но всё же есть.
4. Открываем консоль, запускаем команду
Заполняем поля, как на скрине ниже (в поле Program вставляем путь, скопированный на шаге 4):
Открываем вкладку PHP CS Fixer в правой части окна и кликаем на кнопке с многоточием справа от поля Configuration :
Подтверждаем выбор нажав Ok и затем Apply.
Reformat and rearrange code
You can reformat a part of code, the whole file, group of files, or a directory. You can also exclude part of code or some files from the reformatting.
Reformat a code fragment in a file
In the editor, select a code fragment you want to reformat.
If you don’t select a code fragment, PhpStorm will reformat the whole file.
Reformat a file
Keep pressing Shift and select additional files for a group reformatting.
In the dialog that opens, if you need, select the following reformatting options:
Optimize imports : select this option if you want to remove unused imports, add missing ones, or organize import statements.
For more information, refer to the Optimize imports section.
Rearrange entries : select this option if you need to rearrange your code based on the arrangement rules specified in the code style settings.
Code cleanup : select this option to run the code cleanup inspections.
Reformat code in a folder
Reformat line indents
You can reformat line indents based on the specified settings.
In some cases, the option Detect and use existing file indents for editing located in the Indent Detection section in Settings/Preferences | Editor | Code Style can override your settings. In this case PhpStorm will display a notification.
Automatically reformat code on save
You can configure the IDE to reformat code in modified files automatically when your changes are saved.
Enable the Reformat code option.
Additionally, you can click Configure scope to specify the patterns of filenames and directories that you want to exclude from reformatting.
Exclude files from reformatting
You can exclude a group of files and directories from reformatting, code arrangement, and import optimization.
Switch to the Formatter tab and in the Do not format field, enter the files and directories that you want to exclude using a glob pattern.
Apply the changes and close the dialog.
Exclude code fragments from reformatting in the editor
Switch to the Formatter tab and enable the Turn formatter on/off with markers in code comments option.
The code between the markers won’t be reformatted.
The example below shows two code fragments. One of the is enclosed in the @formatter:off and @formatter:on markers while the other one is not.
The original formatting is preserved:
The original formatting is not preserved in both code fragments:
Keep existing formatting
You can select formatting rules which will be ignored when you reformat the code. For example, you can adjust the IDE to keep simple methods and functions in one line, whereas normally they are expanded into multiple lines after code reformatting.
In the Keep when reformatting section, select the formatting rules which you want to ignore and deselect those which should be applied.
PhpStorm will reformat your code in accordance with the current style settings, keeping existing formatting for the rules which you’ve selected.
Rearrange code
You can rearrange your code according to the arrangement rules set in the Code Style. PHP page of the Settings/Preferences dialog.
Configure grouping rules
Grouping rules let you keep related class methods together.
Create matching rules
Matching rules let you define elements order as a list of rules, where every rule has a set of matching conditions, such as modifier or type.
Use the Type and Modifier filters to choose the code constructs and their visibility modifiers that should be regulated by the rule. Note that double-clicking a filter negates the condition.
Use the Name field to specify entry names the rule should affect. This filter matches only entry names, such as property names, method names, class names, and so on. The filter supports regular expressions and uses a standard syntax. The match is performed against the entire name.
You can also create groups (aliases) of rules and refer to them when creating a new matching rule.
Create rule aliases
With aliases, you can group several arrangement rules into a single entity and refer to it when you adding a new matching rule.
In the Rules Alias Definitions dialog that opens, add a group name and its rules.
The created alias can now be referred to when adding a matching rule.
Create section rules
Section rules let you move methods or variables into the sections that you have defined.
For example, you can create the following section rule:
After the arrangement, methods in the class will be rearranged as specified in the created section rule and will be surrounded by comments:
You can exclude specific files and folders from arrangement. For more information, refer to Exclude files from reformatting.
Rearrange code entries
Select a language for which you want to create arrangement rules.
On the Arrangement tab, specify the appropriate options such as grouping and matching rules.
Click OK to save the changes.
Automatically rearrange code on save
You can configure the IDE to rearrange code elements in modified files automatically when your changes are saved.
Enable the Rearrange code option.
Additionally, you can click Configure arrangement rules to specify the rules for reordering code elements for the selected language.
Продуктивное использование 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 – Переназначение
После нажатия хоткея появляется окно где можно выбрать какие именно методы будем реализовывать. После выбора генерится соответствующий метод с соблюдением приватности и имена атрибутов, например так:
Автоформатирование кода
По-умолчанию, нажатие хоткея форматирует файл целиком. Если выбрать область, то форматируется только selection. Если выбрать в дереве папку или весь проект, можно сразу привести в порядок всё сразу.
Подсказки (Code Completition)
Важной функцией IDE является способность подсказывать названия и атрибуты методов. Особенно это важно для ООП, когда цепочки по 3-4 наследующихся класса способны запутать кого угодно.
Для функций нужно писать PHPDoc с параметром @ return. Например:
Для переменных также можно указать комментарий:
Для методов над классом можно указать PHPDoc
Если функция возвращает массив объектов
Задачи (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 + на мой взгляд легко запоминается)
Тут сказывается удобство того, что 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. Кстати в настройках можно сделать чтобы выделение слов, а также перемещение осуществлялось не целиком (до пробела), а именно по по словам (до заглавной буквы). Спасибо, 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 позволяет гибко настроить и сохранить область поиска, для использования в дальнейшем. Можно выкинуть из поиска, например, файлы фреймворка или сторонние либы.
Убрать рамку с подписями вкладок
В нижнем левом углу есть кнопка, позволяющая убрать рамки для боковых и нижних вкладок. Сами вкладки можно открывать по сочетаниям [CMD] + 0-9, но некоторые вкладки не имеют цифры. В таком случае поможет быстрое двойное нажатие (даблклик) [CMD], которое на время удержания показывает рамку с кнопками, в которые можно тыкать мышой.
Productivity Guide
В меню Help->Productivity Guide есть возможность посмотреть небольшую статистику про себя, а также список фич со статистикой их использования. Спасибо nxn
Сравнение двух файлов
При выделении двух произвольных файлов в менеджере файлов появляется пункт «Compare Two Files», который показывает их в встроенном дифф-вьювере и позволяет переносить изменения из одного файла в другой. Спасибо pro100tak
Метки в проекте
С помощью [CTRL] + [SHIFT] + 0. 9 можно оставлять метки. Вернуться на метку можно с помощью [CTRL] + 0. 9. Работает в контексте всего проекта. Спасибо ualinker
Интересные хоткеи из комментариев
[CMD] + [ALT] + T (WIN: CTRL + ALT + T)
Окружение выделения предзаданными штуками, типа тегов или if-else, в зависимости от контекста. Спасибо happyproff
[CMD] + [F12] (WIN: CTRL + F12)
Структура текущего класса с поиском и опциональным отображением унаследованных членов
Аналог вкладки Structure, только во всплывающем окне. Спасибо happyproff
[ALT] + [Home] — быстрая навигация по пути к файлам. Спасибо develop7
[CMD] + [SHIFT] + A — поиск по командам IDE
Шпаргалка: Горячие (hotkeys) клавиши PhpStorm и PyCharm
Горячих клавиш в IDE PhpStorm и PyCharm гораздо больше, чем в приведенном ниже списке. Здесь я привел только те, которыми пользуюсь сам (* звездочкой выделил наиболее используемые мною горячие клавиши).
Шпаргалка будет обновляться, если начну использовать новые hotkeys.
Для настройки горячих клавиш или добавление собственных сочетаний клавиш перейдите File > Settings > Keymap.
Редактирование
*Ctrl + W — выделение текущего блока. Если нажимать W несколько раз, то будут выделяться родительские блоки по иерархии.
Ctrl + Shift + W — проделывает обратное действие от предыдущего
Ctrl + Y — удаляет строку
*Ctrl + D — дублирует строку
Ctrl + Shift + U — делает выделенный текст или заглавными, или строчными буквами
Ctrl + Delete — удаляет часть от курсора до конца слова
*Ctrl + Alt + L — форматирование кода соответствии с настройками code style.
*Ctrl + / — закомментировать/раскомментировать текущую строку.
Ctrl + Shift + / — закомментировать/раскомментировать выделенные строки кода.
Ctrl + Shift + J — к текущей строке присоединяет нижнюю.
Ctrl + [ или ] — перемещает курсор в начало или конец блока с кодом, в теле фукции, в теле цикла и т.д.
Ctrl + Shift + ] или [ — выделить код код до конца или до начала блока
*Tab — сделать отступ (табуляцию)
*SHIFT + Tab — убрать отступ
*Ctrl + Alt + Стрелка вверх — перемещает текущую строку вверх.
*Ctrl + Alt + Стрелка вниз — перемещает текущую строку вниз.
Ctrl + Shift + Стрелка вниз — перемещает текущий логический блок вниз
*Ctrl + Space — выводит возможные варианты автодополнения
Ctrl + курсор мыши над кодом — краткая информация
*Ctrl + клик по названию переменной или метода, или CTRL+B когда курсор установлен на названии, приведет туда, где метод или переменная определены.
*Ctrl + G — перейти к строке по номеру
*Alt + Клик левой кнопкой мышки — мультикурсор, если нужно одновременно несколько курсоров, кликаем мышкой в нужные места, куда нужно их добавить
*Ctrl + Alt + J — обрамление выделенного текста тегом (нужно выбрать первый пункт из всплывающего окошка)
F11 — быстро установить закладку
Shift + F11 — просмотр всех закладок
Поиск / замена
Двойной Shift — поиск по проекту
*Ctrl + F — поиск в текущем файле
*Ctrl + R — поиск и замена
*Ctrl+Shift+E — вызовет всплывающее окно, в котором показаны последние куски кода в разных файлах, с которыми вы работали
Ctrl + Shift + F — поиск в группе файлов (например в проекте или папке)
Ctrl + Shift + R — поиск и замена в группе файлов
Ctrl + N — найти в каком файле находится класс
*Ctrl + Shift + N — поиск файла по названию
Разное
Ctrl + Alt + S — быстрый доступ к настройкам
*Shift + F6 — переименование файла (выделите в блоке с файлами проекта нужный файл).
PhpStorm: подсветка кода — не последний аргумент
Дата публикации: 2019-01-14
От автора: программирование на PHP требует не только знания самого языка, но и понимания всех тонкостей структуры кода. Нет ничего хорошего в том, чтобы не форматировать написанное, не подгонять его под читабельный вид и все в этом духе. В PhpStorm подсветка кода позволяет частично решить проблему читабельности, но и это еще не все. Сегодня поговорим об основных преимуществах текстового редактора в IDE PhpStorm и узнаем, какие из них пользователи считают наиболее важными.
В наследство от IntelliJ IDEA
Все, что имеет в своем распоряжении PhpStorm, уже было создано в рамках проекта IDEA. В компании JetBrains лишь приспособили тот инструментарий, который был в распоряжении, и выпустили новую среду. Этот подход они использовали еще в ряде продуктов, таких как PyCharm, WebStorm, DataGrid и множестве других. Таким образом, они сумели создать целое семейство IDE, которые помогают делать разработку легче и быстрее.
Одним из коньков IDEA является автоформатирование и подсветка. Немного ниже обсудим этот функционал. IDEA умеет генерировать код на ходу, предлагать варианты продолжения фразы и много других трюков, которые удивили бы разработчика из девяностых. Но в нашем случае важно то, что все подобное умеет и PhpStorm.
Эта среда полностью унаследовала функционал, стабильность и немножко цену. Как и «родительская» IDE, эта среда платная и распространяется в форме подписок на год и больше. Но денежные вопросы не для этой статьи. Намного лучше перейти к конкретным функциям PhpStorm и тому, как эта IDE отличается от всех остальных.
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Редактор на миллион
Подсветкой кода уже никого не удивишь. Даже такие простые программы, как Sublime Text, справляются с этой задачей, поддерживают синтаксис большинства известных языков программирования. К тому же, они делают это успешно: при помощи подсветки можно увидеть свои ошибки и исправить написанное.
Что же делает PhpStorm? Все то же самое, только намного лучше. К примеру, когда ваша программа состоит сразу из нескольких языков, обычный редактор сбивает все это в неразборчивую кашу. Но только не PhpStorm: он подсветит все разным цветом, разбив участки кода независимо от того, какой из языков вы использовали.
Автозаполнение тоже хорошо реализовано в большинстве бесплатных open-source решений. Но ни одно из них не делает это на таком уровне, как PhpStorm. Кроме запрограммированных вариантов дополнений, программа полностью анализирует то, что вы уже успели написать. Таким образом, варианты предсказаний можно свести к одному — тому, который вы имели в виду. Это намного удобнее, чем десятки предложенных вариантов, как это устроено в других средах разработки.
Круто и то, что PhpStorm отлично дружит с Emmet. Это программа, которая обеспечивает генерацию кода при нажатии на комбинации клавиш. Это не тот искусственный интеллект, который предлагает IDEA — лишь набор заготовок. Но умение работать с Эмметом существенно упрощает задачу.
Удивительно хороша ситуация и с автоформатированием. Когда все в вашей команде по-разному располагают строки кода, совместная разработка превращается в ужас. Члены команды начинают ссориться о том, какой отступ делать перед каждой новой или вложенной строкой, как комментировать написанное и т. д. Но, если все сотрудники будут писать в PhpStorm, ситуация не возникнет. Нравится это кому-то или нет, среда разработки самостоятельно решает вопрос о топографии текста в рабочей области. При помощи горячих клавиш разработчик выравнивает код, будто по сетке. Таким образом, тот становится читабельным для каждого тиммейта.
Чудеса интеграции
Конечно, масштабный коммерческий продукт просто обязан работать с основными инструментами программиста. В PhpStorm это реализовано на высоком уровне. К примеру, среда тесно интегрирована с системой контроля версий Git. Это необходимо при масштабных разработках, ведь только лендинги создаются «на чистовик». И если ранее приходилось использовать программное обеспечение для таких операций, то сегодня вы можете взаимодействовать с Git, не покидая интерфейс среды разработки.
Кстати, многие утилиты, для которых необходима была интеграция, теперь реализованы непосредственно в IDE. Если нам нужна SSH-консоль, просто переходим ко вкладке «инструменты» и выбираем «начать SSH-сессию». Уже отсюда можно подключиться к требуемому серверу.
Без межнациональных конфликтов
Здесь, конечно же, немного утрировали. Но сложности в выборе кодировки файла до сих пор являются решающими при создании проекта, несмотря на то, что почти всегда действуем при помощи UTF-8. Но правда в том, что нередки случаи, когда фрагменты должны быть написаны символами Юникода, для того чтобы клиент на другой стороне земного шара мог их прочесть. Для этого в PhpStorm реализована возможность гибкой кодировки. Она находится в настройках IDE, во вкладке «кодировка файла». Не печальтесь, если ничего не изменилось после переработки конфигурации. Все изменения будут приняты, когда вы перезапустите среду.
Разработка веб-приложения на PHP
Создайте веб-приложение на PHP на примере приема платежей на сайте