Урок 15. Редактор кода IDE PhpStorm. Работа с кодом в PhpStorm. Часть 2


Содержание материала:

Отладка PHP-кода с помощью Xdebug в PHPStorm

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

Собственно, так как многим рекурсия показалась сложной, то я решил сделать урок по отладке кода на PHP. В этой статье мы рассмотрим настройку отладки с помощью PHP-расширения Xdebug, а производить отладку мы будем в уже известной нам IDE PHPStorm.

Продолжение урока будет доступно вам
после покупки курса PHP для начинающих

Об авторе

Если вам интересно узнать
как я стал программистом,
читайте вот эту статью.

Configuring code style

If certain coding guidelines exist in a company, one has to follow these guidelines when creating source code. PhpStorm helps you maintain the required code style.

Code styles are defined at the project level and at the IDE level (global).

At the project level, settings are grouped under the Project scheme, which is predefined and is marked in bold. The Project style scheme is applied to the current project only.

You can copy the Project scheme to the >Copy to IDE command.

At the >Default scheme (marked in bold), and any other scheme created by the user by the Duplicate command (marked as plain text). Global settings are used when the user doesn’t want to keep code style settings with the project and share them.

You can copy the >Copy to Project command.

Configure code style for a language

In the Settings/Preferences dialog ( Ctrl+Alt+S ), go to Editor | Code Style and open the page of your programming language.

Choose the code style scheme to be used as the base for your custom coding style for the selected language.

Browse through the tabs of the selected language page, and configure code style preferences for it.

Copy code style settings from other languages

For most of the supported languages, you can copy code style settings from other languages or frameworks.

In the Settings/Preferences dialog ( Ctrl+Alt+S ), go to Editor | Code Style and open the page of your programming language.

Click Set From in the upper-right corner.

The link is shown for those languages only, where defining settings on the base of other languages is applicable.

From the list that appears, select the language to copy the code style from.

Apply framework-specific pre-configured coding standards

For PHP files, you can have framework-specific pre-configured coding standards applied.

In the Settings/Preferences dialog ( Ctrl+Alt+S ), click Code Style, and then click the language.

Click the Set from link, choose Predefined , then choose the relevant pre-configured standard.

Manage code style on a directory level with EditorConfig

PhpStorm allows you to manage all code style settings for each indiv >Settings/Preferences dialog ( Ctrl+Alt+S ). All you need to do is place an .editorconfig file in the root directory containing the files whose code style you want to define. You can have as many .editorconfig files within a project as needed, so you can specify different styles for different modules.

All options from the .editorconfig file are applied to the directory where it res >.editorconfig , it’s taken from the project settings.

All options in the .editorconfig file are divided into the following categories:

Standard options such as indent_size , indent_style , and so on. These options do not have any domain specific prefixes.

Generic IntelliJ options that have the ij_ prefix and are applicable to all languages:

  • ij_visual_guides
  • ij_formatter_off_tag
  • ij_formatter_on_tag
  • ij_formatter_tags_enabled
  • ij_wrap_on_typing
  • ij_continuation_indent_size
  • ij_smart_tabs

Common IntelliJ options supported by many (but not all) languages. They start with the ij_any prefix, for example, ij_any_brace_style .

IntelliJ language-specific options starting with the ij_ _ prefix where is the language domain >ij_php_blank_lines_after_imports .

The same options can be defined as a common option and a language-specific option, for example, ij_ _brace_style . Language-specific options have higher priority over common or generic options.

Add an .editorconfig file

In the Project view, right-click a source directory containing the files whose code style you want to define and choose New | EditorConfig from the context menu.

Select the properties that you want to define so that PhpStorm creates stubs for them, or leave all checkboxes empty to add the required properties manually.

To preview how changes to your code style settings will impact the actual source files, click in the left gutter of the .editorconfig file and select a source file affected by it. The preview will open on the right.

You can make changes in the preview pane to try and test how your configuration changes are reflected without worrying about making unwanted changes to the source code: all these changes are discarded when you close the .editorconfig file.

Настройка >

Подробно описываем настройку PhpStorm для работы с Joomla: от создания проекта и интеграции до развёртывания и сборки расширения.

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

Интеграция с Joomla

Первый шаг — установка Joomla. Самую последнюю версию мы всегда можем скачать с сайта Joomla! Downloads.

Разработку мы будем вести отдельно от установленной Joomla. Тем не менее Joomla необходима нам для развёртывания расширения (все изменения, которые мы будем вносить в процессе разработки, будут загружены на наш локальный или удалённый сервер), что позволит нам тестировать и отлаживать наше расширение. Кроме того, установленная Joomla будет являтся источником для автоподстановки во время написания кода.

В нашем примере Joomla локально установлена в директорию H:\OSPanel\domains\jpathru и доступна по адресу http://jpathru.local , а удалённо (на виртуальном сервере) в директорию /var/www/html/jpathru.remote и доступна по адресу http://jpathru.remote .

Переходим к созданию проекта в PhpStorm.

Создание проекта

Интеграция с Joomla начинается сразу же при создании проекта, когда мы жмем Create Project:

В окне создания проекта выбираем слева Joomla! Integration, а справа указываем расположение проекта, путь до установки Joomla, путь до файла конфигурации Joomla и тип проекта (выбираем Joomla! Component):

Нажимаем Create и PhpStorm создаст проект с предустановленным каркасом компонента:

При этом он тут же попросит поставить поддержку Joomla DocBlock Templates:

Joomla DocBlock Templates позволяют автоматически заполнять каркас описания классов и методов в стиле Joomla.

Каркас несомненно сократит время начальной разработки, но в рамках этого руководства мы остановимся на более лаконичном варианте:

Если вдруг мы захотим вернуться к настройке интеграции Joomla, то сделать это довольно просто. Заходим в Settings и пишем в поиске joomla — откроется окно интеграции Joomla:

База данных

Для поддержки базы данных PhpStorm использует файл конфигурации Joomla. Это дает возможность использовать дополнительные функции в редакторе, такие как соединение с базой данных или автоподстановку для конструктора запросов JDatabaseQuery.

Создание соединения

Для создания соединения с базой данных необходимо настроить источник данных (Data Source):

  1. Открываем окно инструмента базы данных (Database Tool Window).
  2. Нажимаем на значок +, чтобы открыть меню.
  3. Выбераем параметр Import from sources.
  4. Откроется окно Data Source and Drivers:

  • Заходим в иконку Open Server >Дополнительно >Конфигурация >MySQL:

Настройка SQL диалекта

Настройка SQL диалекта поможет PhpStorm работать с языком запросов и выполнять автоподстановку. Заходим в Settings и пишем в поиске dialects — откроется окно SQL Dialects:

Так как мы работаем с MySQL, то в настройке Project SQL Dialect выбираем MySQL. Если вы чаще всего работаете MySQL, то такую же настройку можно установить и для Global SQL Dialect.

Работа в редакторе

Теперь, когда мы настроили источник данных и диалект, PhpStorm начнёт понимать конструктор запросов JDatabaseQuery и автоматически выполнять подстановку при создании запросов.

Давайте посмотрим на этот запрос из компонента Баннеры:

Как показано на скриншоте ниже, слово cat было набрано, а параметры показаны во всплывающем окне:

Совпадения отображаются фиолетовым цветом. Выберите catid из списка и нажмите Enter — имя будет дозаполнено.

Такая же автоподстановка работает и для таблиц:

Мы также можем напрямую переходить от запроса к таблице или полю. Когда курсор наведен на catid в коде ->select(‘catid’) , нажимаем CTRL-B / CMD-B, курсор переместится на боковую панель базы данных и выберет поле catid в таблице banners .

Мы можем выполнять запрос напрямую из кода (когда курсор наведён на поле выборки), используя CTRL-Enter / CMD-Enter. Это работает только для тех запросов, которые являются исполняемыми.

Анализатор кода

Анализатор кода необходим для того, чтобы выявлять «плохой» код и следить за тем, чтобы код соответствовал единому стандарту оформления, принятому в Joomla. Подробнее об установке и настройке читайте в официальной документации (на русском) Joomla CodeSniffer.

Развёртывание (deployment)

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

Настройка локального сервера

Начнем настройку развёртывания с локального сервера.

  1. Заходим в Tools >Deployment >Configuration. Откроется окно Deployment.
  2. Нажимаем значок +, выбираем Local or mounted folder:

На вкладке Connection задаем параметры соединения:

  • Folder: указываем путь до установки Joomla.
  • Web server URL: указываем адрес установки Joomla (не обязательно).

На вкладке Mappings задаем соответствие (маппинг) путей проекта (Local path) путям на сервере (Deployment path). Например, путь admin в проекте соответствует путю administrator\components\com_jpathru на сервере. Таким образом прописываем все соответствия нашего проекта:

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

Теперь при нажатии на значок Deployment нам доступно полное меню развёртывания и мы можем закачивать и скачивать файлы с локального сервера:

Мы также можем просматривать файлы сервера через опцию Browse Remote Host, которая открывается в боковой панели:

Закачивать файлы вручную не совсем удобно, поэтому в PhpStorm предусмотрен режим автоматической загрузки измененных файлов. Для настройки этой возможности заходим в Tools > Deployment > Options и в параметре Upload changed files automatically to the default server выбираем опцию On explicit save action (Ctrl + S):

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

Настройка удалённого сервера

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

В нашем случае в качестве удалённого сервера выступает виртуальный сервер.

  1. Заходим в Tools >Deployment >Configuration или через значок Deployment выбираем Configuration.
  2. Нажимаем значок +, выбираем SFTP.
  3. Задаём название серверу. Например, jpathru-remote.
  4. Жмем ОК, откроется окно настройки развёртывания сервера jpathru-remote:

На вкладке Connection задаем параметры соединения:

  • Host: указываем адрес установки Joomla.
  • User name: указываем имя пользователя, в нашем случае это root.
  • Authentication: указываем тип аутентификации. Рекомендуем указать Key pair.
  • В появившейся настройке Private key path задаём путь до нашего приватного ключа.
  • Root path: указываем путь до директории установки Joomla.
  • Web server URL: указываем адрес установки Joomla (не обязательно).
  • Нажимем на Test Connection и убеждаемся, что соединение успешно.

На вкладке Mappings задаем соответствие (маппинг) путей проекта (Local path) путям на сервере (Deployment path) по аналогии с локальным сервером:

Сборка расширения

Для сборки расширения мы будем использовать Phing. Это достаточно гибкий инструмент, который прост в освоении (основан на PHP), и в то же время достаточно мощный. Он имеет множество встроенных средств и неплохой API. Управлять сборкой мы можем при помощи XML файлов, в которых описываем цели и задачи, выполняемые в процессе сборки.

В сети достаточно руководств по теме Phing, поэтому в качестве примера мы используем простой XML файл, задача которого собрать наше расширение в zip-архив (для тестирования или релиза), который будет годен для установки в Joomla. Создаем в проекте файл build.xml со следующим содержимым:

Теперь жмем правой кнопкой мышки на файле и выбираем опцию Add as a Phing Build File. В боковой панели появится окно работы с Phing.

Пробуем запустить команду make-dev. PhpStorm откроет окно Phing с предупреждением о том, что не прописан путь до исполняемого файла Phing:

Жмем на надпись Click here to download the latest from phing.info и указываем путь, по которому мы хотим сохранить исполняемый файл. PhpStorm автоматически загрузит необходимый файл и пропишет путь. Жмем OK и PhpStorm запустит выполнение команды:

После того, как проект создан и настроен, можно добавлять его в git. Сначала в проекте создаём файл .gitignore и прописываем в нём папки, которые git должен игнорировать:

  • .idea — папка с настройками проекта PhpStorm;
  • build — папка, в которую складываются сборки расширения.

Далее открываем терминал в PhpStorm и выполняем команды:

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

Вот мы и добрались до того момента, когда мы практически готовы начать полноценную разработку. Почему практически? Потому что разработка будет неполной без отладки кода. Об этом мы поговорим в нашей следующей части (пока в процессе написания), которая будем посвещена настройке среды и PhpStorm для отладки расширений.

> / codd 0 Comments

Горячие клавиши в IDE PhpStorm

CTRL + ALT + L — отформатирует код, в соответствии с вашими настройками

CTRL + SHIFT + Backspace — вернёт вас к месту предыдущего редактирования кода

CTRL + Space — покажет диалоговое окно с подсказками

CTRL + Q — выведет диалоговое окно с документацией по активному элементу. При повторном нажатии на Q — зафиксирует окно с документацией

CTRL + B или Ctrl + Click — переход к месту декларации

ALT + Enter — покажет окно с возможными действиями и исправлениями

ALT + Shift + up — переместит текущую строку на одну строку вверх
ALT + Shift + down — переместит текущую строку на одну строку вниз

Ctrl + W — выделит блок кода (слово/строка/документ)

Ctrl + G — переход к указанной строке (вызовет диалоговое окно для ввода номера строки)

Пошаговая настройка PHPStorm + Xdebug + OpenServer

1. В php.ini добавляем/раскомментируем нижеследующие строки и перезагружаем OpenServer.

2. На странице https://www.jetbrains.com/phpstorm/marklets/ в поле «IDE key» вводим «PHPSTORM» и нажимаем «Generate». Добавляем появившиеся ссылки на экспресс-панель браузера.

3. Заходим в настройки PhpStorm: File -> Settings -> Languages & Frameworks -> PHP -> Debug.
В секции «Xdebug» в поле «Debug port» указываем «9000» и снимаем галочки с пунктов «Force break at first line when no path mapping specified» и «Force break at first line when a script is outside the project».

4. В навигационной панели нажимает на «Add Configuration» и добавляем новый конфиг «PHP Remote Debug»: Name — «Xdebug», Server — «localhost», IDE key — «PHPSTORM»

5. В строке «Server» нажимаем на многоточие «…» и вводим следующие параметры: Host — «localhost», Port — «80», Debugger — «Xdebug».

6. Приступаем к отладке. В PhpStorm активируем «Listen PHP Debug Connections» (значок телефонной трубки). В экспресс-панели браузера нажимаем на «Start debugger». Устанавливаем точки остановки и перезагружаем страницу в браузере.

7. Для запуска профилирования в браузере нажимаем на «Start profiler» и перезагружаем страницу сайта. Лог работы профайлера сохранится в «%sprogdir%/userdata/temp/xdebug/». Для его просмотра в PhpStorm нажимаем на Tools -> Analyze Xdebug Profiler Snapshot и указываем путь до лога.

PHPStorm: Когда >

  • Сайтостроение
  • Статьи
  • Веб-программирование
  • Программирование на PHP

О, я обожаю быстрые и простые текстовые редакторы. Будучи пользователем Linux, я несколько лет практически не расставался с Kate и KWrite.

С помощью ряда приемов и плагинов, я сделал эти редакторы действительно очень интеллектуальными. Я написал в них целые проекты на Perl , Bash и даже на PHP и Java .

Я могу понять энтузиазм, с которым воспринимаются Sublime Text или TextMate , но сегодня я уже не могу обойтись без полномасштабной IDE .

Культура

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

Но это сказывается на обучаемости приложения и легкости его использования. Это те программисты, которые предпочитают Vi(m) или Emacs .

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

В результате у них формируется совершенно другой менталитет и представление проекта и кода. Я программист из этой категории, поэтому в данной статье мы поговорим об >PHPStorm .

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

Становится главной магистралью вашего повседневного рабочего процесса. Так что оно заслуживает упоминания и представления.

Так, в чем разница?

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

Сегодняшние компьютеры и интегрированные среды разработки настолько быстры, что теперь это практически занимает столько же времени: запустить PHPStorm и начать писать код в нем или запустить KWrite и писать код в этом редакторе.

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

Хорошо, хорошо… Все это общие характеристики. Но как насчет специфических функций IDE? Аббревиатура IDE происходит от термина интегрированная среда разработки. Эта фраза содержит две ключевых части: интегрированная и среда разработки.

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

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

Ключевой особенностью IDE является ее понимание кода, который вы пишете. IDE не просто содержит список команд, которые можно использовать в вашем любимом языке, например, PHP или каком-либо другом. Она поддерживает сложные алгоритмы, предназначенные для понимания вашего кода.

PHPStorm не предложит вам команду или выражение, которое было бы синтаксически неверным. Он знает, например, что вы не можете написать «print(‘Hello World’);» непосредственно внутри класса, не заключив это выражение в функцию.

Так что >«print()» в случае, когда она не может быть использована. Но это только верхушка айсберга.

Давайте рассмотрим еще несколько конкретных примеров.

Использование PHPStorm в серии статей «Рефакторинг производного кода»

Да. Если вы читали первые две части серии статей « Рефакторинг производного кода »: Золотой мастер и Магические строки и константы , вы могли заметить, что в них приведены скриншоты из IDE.

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

Подсветка кода

Это очень важно. Большинство простых редакторов также может сделать подсветку кода, но >PHP , HTML , CSS и так далее.

Каждую со своим собственным набором правил. Например, я хотел бы, чтобы строки CSS имели зеленый цвет, PHP и HTML — оранжевый:

Слева вы можете увидеть все поддерживаемые типы файлов и языки (некоторые из них могут быть добавлены с помощью плагинов), в центре можно увидеть разные элементы языка PHP, которые можно настроить по отдельности, в правом верхнем углу есть опции, которые могут быть применены к каждому элементу, а внизу есть окно предварительного просмотра.

Когда мы искали магические строки в серии по рефакторингу, мы могли легко определить эти строки, просто найдя оранжевый текст на экране. То же самое касается и магических констант и чисел. Когда мы искали их, синий цвет помогал нам в этом.

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

Обзор инструментов рефакторинга

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

Есть вещи, предлагаемые PHPStorm , которых вы не найдете ни в одном другом редакторе или IDE для PHP. Это набор инструментов рефакторинга, которые так необходимы в нашей повседневной работе.

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

Мы программисты тратим половину нашего времени на чтение кода, около 40% времени на изменение и рефакторинг существующего кода, и, если повезет, если действительно повезет, 10 % на написание нового кода.

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

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

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

Представление локальных переменных

Одним из самых простых видов рефакторинга, с которым мы уже работали в магических строках и константах, являлось « Представление локальных переменных », также известное как « Извлечение переменных ».

Я кратко напомню этапы, которые мы должны пройти, чтобы использовать этот вид рефакторинга:

  • Добавление переменной с требуемым значением;
  • Поиск всех вхождений ее значений;
  • Замена всех вхождений переменной.

Это просто сделать, если у нас есть одно значение для преобразования в переменную, но как насчет второго шага? Как точно найти все вхождения этого значения?

Вам нужно проанализировать ваш код и принять сознательные решения о том, что заменять, а что нет. Например:

В printAPairOfPlayers ( мы можем видеть, что строка « Player name: » повторяется дважды. Если мы хотим извлечь эту строку в локальную переменную, переменную внутри функции, нам нужно будет заменить оба вхождения на printAPairOfPlayers() , а не одно на printOnePlayer() .

Если printOnePlayer() будет располагаться на 100 строк ниже, мы даже не сможем увидеть, что есть еще одно дублирование строки в другом методе.

Поэтому нам нужна локальная переменная. Мы сначала создаем переменную, запускаем тесты, а затем ищем строку и находим ее во втором операторе echo .

Мы заменяем ее, запускаем тесты, еще раз ищем, находим ее в последнем операторе echo , заменяем ее, снова запускаем тесты. Ищем снова, пока не достигнем конца метода.

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

Не было бы проще нажать одну кнопку или выбрать опцию в меню, и >PHPStorm вполне способен это сделать.

В случае с приведенным выше кодом просто наведите курсор на строку « Player name: » в любом месте и щелкните правой кнопкой мыши:

После того, как вы выберете команду « Extract Variable… », PHPStorm проанализирует код и произведет поиск различных фрагментов кода, которые вы зададите.

В нашем случае будет предложено два варианта выражения:

Это не просто крутая фишка, это еще и очень полезно. Очень часто случается так, что дублирование может возникнуть за пределами вашего поля зрения.

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

Для нашего примера, давайте выберем только часть строки, без объединения:

Теперь, когда фрагмент кода, который мы хотим извлечь, идентифицирован, наш следующий шаг — назвать его. « playerHeadersString » — кажется подходящее имя для переменной.

В поле ввода вам не нужно ставить символ « $ » перед ее именем. PHPStorm проставит его в код автоматически. Еще одним важным аспектом является то, что у нас есть еще и дополнительные опции. PHPStorm нашел все вхождения нашей переменной.

Мы выбрали для извлечения локальную переменную, что указывает PHPStorm искать только в текущем методе, и он нашел только два вхождения.

Такая же строка в методе printOnePlayer() , не учитывалась и не была нам предложена, поэтому она не будет заменена. В противном случае это привело бы к ошибке в коде, и PHPStorm достаточно умен, чтобы предостеречь нас от этой ошибки:

Меньше тестов

Еще одно преимущество PHPStorm заключается в том, что вам не нужно часто выполнять тесты. Когда мы производим рефакторинг вручную, мы запускаем тесты после каждого следующего шага.

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

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

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

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

Извлечение переменных классов

Чтобы извлечь нашу строку в переменную класса — также известную как поле класса — мы можем использовать опцию рефакторинга « Extract Field » из того же контекстного меню, которое было описано выше.

Нам будет предложено определить фрагмент кода, который нам нужно извлечь, и результаты будут представлены несколько в иной форме:

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

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

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

Инициализация зависимой от контекста переменной

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

Давайте рассмотрим один из способов извлечения переменной из магических строк и констант:

В методе roll() , в строке 73 — та, что выбрана — есть число « 11 «. Это магическое число, которое мы только что определили, и теперь мы хотим извлечь его.

Если мы осуществляем извлечение вручную, мы должны будем проделать следующие действия:

  • Определить переменную в строке, предшествующей строке со значением 11;
  • Запустить тесты;
  • Заменить значение переменной;
  • Запустить тесты;
  • Осуществить поиск другого вхождения числа 11;
  • Определить ее в строке 90;
  • Заменить значение нашей переменной;
  • Запустить тесты. Они выдадут ошибку;
  • Спросить себя, где разместить инициализацию переменной так, что она работала, но по-прежнему как можно ближе к месту ее использования;
  • Переместить инициализацию переменной на один уровень выше;
  • Запустить тесты. Они все равно выдают ошибку;
  • Переместить инициализацию переменной еще на один уровень вверх, за пределы всего оператора if;
  • Запустить тесты. Они, наконец, проходят;
  • Осуществить поиск других вхождений;
  • Больше не найдено. Дело сделано.

Как видите, это очень сложный процесс. И чреватый ошибками. Мы предполагаем, что у вас могут быть тесты, которые помогают вам, но что, если вы работаете с каким-то совершенно нечитаемым, трудно проверяемым кодом?

PHPStorm сам будет распознавать контекст вашего кода. Он будет корректно извлекать переменную для всех случаев и разместит ее именно там, где она и должна быть:

Подводная часть айсберга

То, что мы описали вам выше, это примерно верхушка айсберга. Извлечение переменных это, вероятно, самый простой и легкий способ рефакторинга.

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

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

Переименование

PHPStorm очень хорош для переименования переменных или методов, даже с сотнями классов. Представьте себе, как трудно было бы изменить название открытого метода, используемого в 100 различных классах проекта.

PHPStorm может сделать это за пять минут, в то время как у вас это заняло бы около двух часов. Он может найти и изменить название всех методов, и вам останется только проверить несоответствия, прежде чем вы сможете сказать, что все в порядке.

Да, да … Вам нужно будет проверить некоторые найденные вхождения, потому что PHP это язык динамических типов, и в некоторых случаях — этого не может не только PHPStorm — любой другой алгоритм IDE или программа такого рода не сможет распознать, какой тип объекта используется для конкретного вызова метода.

Представьте, что у вас есть два совершенно разных класса. В каждом из них у вас есть открытый метод под названием «findAll()» . Это очень распространенная ситуация.

Для чего нам нужно оценивать изменения?

Допустим, 50 классов используют первый класс, и еще 50 классов используют второй. Если вы использовали надлежащие интерфейсы и указания для типов, где это возможно, PHPStorm предложит правильные классы для замены.

Но если вы не указали тип, который вы используете, или вы не использовали интерфейс, реализованный с помощью класса в методе findAll() , не существует способа, чтобы автоматически установить, который из ваших двух классов, содержащих метод findAll() , нужно использовать.

Из-за динамической типизации PHP. Хотя в некоторых случаях это дает определенные преимущества, в случаях, когда нам нужно произвести рефакторинг, как сейчас, это является недостатком. Когда такое происходит, единственное, что можно сделать, это самому человеку оценить необходимость замены.

С учетом всего вышесказанного, хотя в PHPStorm есть и другие функции, кроме рефакторинга, это, тем не менее, лучшая IDE, если основная задача это именно рефакторинг.

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

Но PHPStorm на этом не останавливается. Он имеет много других инструментов рефакторинга, которые выручают вас в трудных ситуациях. Это действительно позволяет вам чувствовать себя уверенно.

Тестирование и просмотр кода

Вы делаете TDD, не так ли? Если нет, то стоило бы. Тестирование так же важно в программировании, как собственно написание кода. Лично я не могу представить свою жизнь без TDD.

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

Тестирование и IDE

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

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

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

Другие >PHPUnit , функции записи и вывода в XML-файле и интерпретируют результаты, чтобы показать их вам. Так работает NetBeans .

Такой подход обеспечивает более высокую гибкость для вас, как для пользователя, если вы хотите обойти систему и запустить тесты нестандартными способами (например, через Telnet или SSH ).

Но в этом также заключается и огромное неудобство. Все начинает работать медленно.

Прежде всего, процесс оболочки должен быть разветвленным. «exec()» всегда потребляет много ресурсов. В этом случае результат должен быть записан в отдельный файл, возможно, на удаленном компьютере.

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

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

Затем файл должен быть считан, чтобы вывести его пользователю.

Хотя это супер гибко настраиваемое решение, оно требует много времени. Слишком много, если речь идет о юнит-тестировании и миллисекундах на прохождение тестов. И юнит-тесты, которые занимают более пяти миллисекунд, вообще уже нельзя считать юнит-тестами.

Внутреннее использование PHPUnit

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

Это уменьшает гибкость. Вы не можете обойти его, чтобы провести тесты без этих ограничений. Но это очень сильно увеличивает скорость.

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

Другое приятное преимущество заключается в том, что прямое использование PHPUnit позволяет получить более подробную информацию о неудачных тестах, которая будет представлена более организованно.

Так мы получаем преимущество в скорости, подробности и четкости информации за счет гибкости.

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

Организация и поиск файлов

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

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

Но и это еще не все. Когда речь заходит о поиске и запуске файлов в PHPStorm есть уникальная функция: перейти к Everything (или Search Everything ) — я обожаю эту функцию.

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

Она была представлена совсем недавно, до того мы имели отдельные навигационные панели и кнопки поиска файла по имени, поиска файла по имени класса, поиска файла, содержащего символ (переменную или имя метода) и так далее.

Поэтому я могу просто нажать Shift + Shift и начать набирать искомый параметр. Это замечательно и быстро.

Заключительное слово

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

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

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

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

Управление проектами — это довольно типичная для >JetBrains сделали кое-что действительно удивительное.

Их движок индексации просто быстр, как фурия. Ни одной другой >Syneto так быстро. А затем так же быстро провести по нему поиск.

Фактически интегрированные среды разработки, такие как NetBeans или Eclipse и его производные, как правило, не в состоянии проиндексировать весь проект.

Это делает поиск очень медленным. PHPStorm делает это корректно и очень быстро по сравнению с любой другой IDE.

Интеграция версий документов — это еще один козырь в колоде PHPStorm . Mercurial , Git , CVS , Subversion , вы можете сами продолжить этот список. PHPStorm чувствует себя как рыба в воде с каждым из них.

От выборочной фиксации и установления совместимости с различными инструментами и до разнообразных графических функций — все это вы имеете в своем расположении.

Так как я являюсь пользователем PHPStorm , мне приходилось использовать CLI для выдачи команды «hg» , возможно, два раза или около того. И он просто работал.

Макросы — полезны для тех небольших, но раздражающих повторяющихся задач, которые вам нужно постоянно выполнять. В PHP каждая строка должна заканчиваться точкой с запятой. Как часто ваш курсор находится в конце строки, когда вы закончили писать весь ее код?

Очень редко. Как правило, вы работаете над контекстом самой строки: прописываете в скобках некоторые параметры или что-то вроде того. А после этого вам нужно перейти в конец строки и нажать «;». Что ж, с помощью макросов это легко автоматизировать.

Ок, достаточно разговоров. Не буду больше удерживать вас, чтобы вы могли сами скачать и попробовать PHPStorm .

Данная публикация представляет собой перевод статьи « PHPStorm When the IDE Really Matters » , подготовленной дружной командой проекта Интернет-технологии.ру

Пройти видеокурс по PHPStorm от JetBrains

Буду изучать возможности данного IDE.

Все видео данного видео-курса выложил у себя на блоге. Можете найти по этой ссылке:

Критерий завершения

Все уроки прошёл.

Личные ресурсы

Приступая к работе

00-1. Введение в PhpStorm

00-2. Концепция IDE

00-3. Рассмотрение интерфейса PhpStorm IDE

00-4. Основные концепции PhpStorm IDE

00-5. Основы работы с редактором и навигация в PhpStorm

00-6. Подробнее о работе в редакторе PhpStorm

00-7. Создание проекта в PhpStorm

PHP Разработка

01-01 Рефакторинг PHP-кода в PhpStorm

01-02 Генерация кода в PhpStorm

01-03 Поддержка пространства имен в PhpStorm

01-04 Не требующий настройки дебаггинг в PHPStorm

01-05 Проверка конфигурации дебаггера в PHPStorm

01-06 Подробнее о дебаггинге в PHPStorm

01-07 Профилирование PHP-приложений в PHPStorm

01-08 Поддержка PHPUnit в PHPStorm

01-09 Проводим PHPUnit тестирование в PHPStorm

01-10 Поддержка Composer в PHPStorm

01-11 Поддержка Phing в PhpStorm

HTML, CSS, JavaScript

02-01 HTML-редактор в PHPStorm

02-02 CSS-редактор в PHPStorm

02-03 Live Edit в PHPStorm

02-04 File Watchers в PHPStorm

02-05 Редактор JavaScript и рефакторинг кода в PHPStorm

02-06 Отладка JavaScript в PHPStorm

02-07 Юнит-тест для JavaScript в PHPStorm

Среда разработки

03-01 Языковые инъекции (Mix-ins) в PHPStorm

03-02 Live Templates (Сниппеты) в PHPStorm

03-03 Файловые шаблоны в PHPStorm

03-04 TODO комментарии в PHPStorm

03-05 Деплоймент и работа с удаленным хостом в PHPStorm

03-06 Поддержка систем управления версиями в PHPStorm

03-07 Поддержка GitHub в PHPStorm

03-08 Локальная история в PHPStorm

03-09 Поддержка Vagrant в PHPStorm

03-10 Инструмент командная строка в PHPStorm

03-11 Встроенная SSH консоль и Remote Tools в PHPStorm

03-12 Базы данных и SQL редактор в PHPStorm

03-13 Встроенный REST-Client в PHPStorm

03-14 Интеграция с системой управления проектами в PHPStorm

Создание нового проекта в >Создание нового проекта в IDE Phpstorm и настройка интерфейса (в продолжение крайней встречи 30.09.2020)

Создание нового проекта в IDE Phpstorm и настройка интерфейса (в продолжение крайней встречи 30.09.2020)

Создание нового проекта в IDE Phpstorm

IDE позволяем создавать 2 типа проектов:

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

Создание нового локального проекта

Author : Вадим В. Костерин

Директор Инженерного центра Высшей школы экономики и управления НИУ ЮУрГУ, ст. преп. кафедры Информационных технологий экономики

Добавить комментарий Отменить ответ

Поиск

Сейчас в сети

Рубрики

Свежие записи

Опрос дня

Дни рождения

Copyright ©2020 ЭУ-444 & ЭУ-461, Бизнес-информатика . All rights reserved. Powered by WordPress & Designed by Cyclone Themes

С 07 октября 2020 года открыта регистрация студентов на обучение по модели элитного образования

Краткая инструкция по подаче заявок на участие находится ЗДЕСЬ.

Спешите. Регистрация только до 15/10/19!

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

Победите в конкурсе научно-исследовательских работ студентов, проводимым НИУ «Высшая школа экономики»!

До 15 октября подавайте свою работу по направлению «Бизнес-информатика», победители будут определены в честной конкуренции – самые достойные из лучших всех университетов России!

Критерии экспертной оценки конкурсных работ по направлению «Бизнес-информатика»:

  • соответствие содержания работы тематической направленности конкурса;
  • актуальность темы исследования и чёткость постановки проблемы исследования;
  • научная новизна работы, оригинальность авторского подхода и решений;
  • глубина исследования, логичность и ясность изложения, корректность и обоснованность выводов и результатов, степень раскрытия темы исследования и завершенность работы;
  • практическая применимость / теоретическая значимость результатов работы.

Работа на конкурс подается анонимно в электронном виде через сайт конкурса,

С положением конкурса НИРС можно ознакомиться по ссылке ЗДЕСЬ.

#5 — Пишем код быстрее. Горячие клавиши PHPStorm. Сниппеты.

Добро пожаловать на пятый видеоурок курса по изучению возможностей редактора PHPStorm! На этом занятии вы рассмотрите самые часто используемые горячие клавиши PhpStorm. Наш видеоурок посвяятит вас также в тайны сниппетов, вы узнаете, как ими пользоваться и как создавать свои.

Самые востребованные горячие клавиши PHPStorm

Чтобы просмотреть все функции и соответствующие им сочетания горячих клавиш PHPStorm, зайдите в Preferences -> Keymap. Щелкнув два раза кнопкой мыши по функции, вы можете поменять сочетание клавиш. На видеоуроке рассмотрены основные сочетания горячих клавиш PHPStorm и соответствующие им функции:

  • • Форматирование кода в соответствии с настройками – Ctrl+Alt+L. Настройки форматирования для каждого языка находятся в Preferences -> Editor -> Code Style.
  • • Поиск по файлу – Ctrl+F.
  • • Поиск с заменой – Ctrl+R [в верхней строке – что вы хотите заменить, в нижней – на что вы хотите заменить].
  • • Создание дубликата текущей строки – Ctrl+D.
  • • Удаление текущей строки — Ctrl+BackSpace.
  • • Выделение определенных фрагментов кода – Alt+ꜛ(клавиша вверх).
  • • Перемещение текущей строки – Ctrl+Shift +вверх/вниз.
  • • Копирование и вставка фрагмента – Ctrl+C и Ctrl+V.
  • • История вставок – Ctrl+Shift+V или View -> Paste from History.
  • • Мультивыделение – зажатая клавиша Alt [таскаем курсор по документу].
  • • Информация о переменной – зажатая клавиша Ctrl.
  • • Возвращение к предыдущему месту редактирования — Ctrl+Shift+BackSpace.

ВАЖНО! В MasOS клавишу Ctrl заменяем на Command.

Сниппеты PHPStorm

Сниппеты — это определенные куски кода, которые можно вызывать по определенному триггеру (сокращению). Например, !+Tab разворачивает заготовку для HTML-файла. В этом примере «!» является триггером. Меню настройки и создание сниппетов: Preferences -> Editor -> Live Templates.

Рассмотрим пример создания своего сниппета для JavaScript. Наш сниппет будет вызывать функцию, которая выводит принимаемые ей параметры в консоль.

Нажимаем JavaScript -> +. Выводится окно, у которого в поле Abbreviation необходимо вписать триггер (confunc), Description (необязательно заполнять) – описание сниппета и Template text – код сниппета:

Настройка PhpStorm для работы с Yii

Настройки и удобные нюансы самого PhpStorm.

1. Показывать звёздочку возле изменённого, но не сохранённого файла (по умолчанию она не показывается):

File -> Settings ->IDE Settings -> Editor -> Editor Tabs — поставить галочку «mark modified tabs with asterisk»

Настройки PhpStrom для работы с Yii.

  1. Исключаем из индекса yiilite.php:
    • File → Settings → IDE Settings → File Types.
    • В Ignore files and folders добавляем yiilite.php.
  2. Исключаем «лишние» директории, указываем ресурсы.
    • File → Settings → Project settings → Directories.
    • Помечаем framework/cli/views, protected/runtime и assets как excluded.
    • Помечаем корень сайта как resource root.
  3. Указываем путь к PHP.
    • File → Settings → Project settings → PHP → PHP Home.
  4. Подключаем Yii, если он не является частью проекта.
    • File → Settings → Project settings → PHP → PHP Home → Add.
    • Указываем путь до директории framework.
  5. Если используется PHPUnit, подключить его:
    • File → Settings → Project settings → PHP → PHP Home → Add.
    • Указываем путь до директории PHPUnit.
  • Дополнение кода: Ctrl+Space.
  • Параметры метода: Ctrl+Q.

Тестирование

Для запуска модульных тестов Yii нужно установить PHPUnit.

  1. PHPUnit.
    • Устанавливаем по инструкции на официальном сайте.
    • В IDE: Run → Edit configurations.
    • Жмём на плюсик.
    • Name: что угодно.
    • Test: в зависимости от того, что тестировать выбираем нужное и указываем путь.
    • Use XML configuration file: путь до phpunit.xml. Обычнопуть_до_приложения/protected/tests/phpunit.xml.
  • Для запуска тестов используем SHIFT+F10.

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

phpstorm — настройки и советы по работе в ide

краткие настройки phpstorm

/.PhpStorm*version*/phpstorm64.vmoptions
рекомендую увеличить доп. макс. выделяемую оперативку до 512 или 1024: -Xmx1024m
на примере pentium b980 (2x) + 8gb ddr3 + ubuntu 16.10 x64 unity

  • file — settings — editor — colors&fonts — font
    primary font: ubuntu mono
    size: 18 (не пугайтесь: на деле выглядит как 14px)
    line spacing: 1.1 (для корректного отображения имен параметров в версии 2020.1 и выше)
    secondary font: fira code
    [v] enable font ligatures (преобразуется внешний вид символов <> == === => и т.д.)
    или поменять шрифты местами их если привыкните к основному шрифту fira code
    настраивал для 1920x1080px, для 1366px можно уменьшить параметры малость
    или так
    primary font: source code pro
    size: 14
    line spacing: 1.1
  • file — settings — appearance&behavior — appearance — override default fonts by
    name: ubuntu
    size: 16
  • краткие советы по работе в phpstorm

    • осторожнее с опцией *delete target items when source ones do not exist*
      в tools — deployment — options
      пример
      в локальной директории /dir1/ находится десять файлов
      в удаленной директории /dir1/ находятся сто файлов
      при отмеченном чекбоксе в некоторых случаях вы можете лишиться файлов на сервере без предупреждения
    • vcs — local history
      удобная вещь, но часто она неожиданно становится поврежденной или при обновлении phpstorm очищается история правок файла
      поэтому рекомендую сразу создавать git при создании нового проекта
      vcs — enable version control integration — git
      добавить все файлы и закоммитить с пометкой init
    • закиньте настройки в облако
      создав символическую ссылку директории config (system весит много, да и не нужна она в облаке)
      ln -s

    /.PhpStorm*version*/config phpstorm_config
    и закинув ее в дропбокс, например

  • для ускорения работы ide добавляйте в исключения неиспользуемые директории
    file — settings — directories — excluded
    (ignores it during indexing, parsing, and code completion: directories)
  • autocomplete без учета регистра
    file -> setting -> editor -> general -> code completion -> case sensitive completion -> none
  • scroll from source (в remote host)
    navigate -> select in -> remote host
  • Топ-пост этого месяца:  SMO-продвижение что это такое и чем отличается от SMM и SEO
    Добавить комментарий