Урок 16. Редактор кода IDE PhpStorm. PhpStorm и GitHub

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

Enjoy
productive php

PhpStorm deeply
understands your code.

Major frameworks support

PhpStorm is perfect for working with Symfony, Laravel, Drupal, WordPress, Zend Framework, Magento, Joomla!, CakePHP, Yii, and other frameworks.

All the PHP tools

The editor actually ‘gets’ your code and deeply understands its structure, supporting all the PHP language features for modern and legacy projects. It provides the best code completion, refactorings, on-the-fly error prevention, and more.

Front-end technologies included

Make the most of the cutting edge front-end technologies, such as HTML 5, CSS, Sass, Less, Stylus, CoffeeScript, TypeScript, Emmet, and JavaScript, with refactorings, debugging, and unit testing available. See the changes instantly in the browser thanks to Live Edit.

Built-in developer tools

Perform many routine tasks right from the IDE, thanks to the Version Control Systems integration, support for remote deployment, databases/SQL, command-line tools, Docker, Composer, REST Client, and many other tools.

PhpStorm = WebStorm + PHP + DB/SQL

All the features in WebStorm are included into PhpStorm, with full-fledged support for PHP and Databases/SQL support added on top.

Intelligent Coding Assistance

Hundreds of inspections take care of verifying your code as you type, analyzing the whole project. PHPDoc support, code (re)arranger and formatter, quick-fixes, and other features help you write neat code that is easy to maintain.

Smart Code Navigation

Be the master of your codebase thanks to the efficient, lightning-fast navigation features. The IDE understands where you want to go and gets you there instantly.

Fast and Safe Refactoring

Refactor your code reliably with the safe Rename, Move, Delete, Extract Method, Inline Variable, Push members Up / Pull members Down, Change Signature, and many other refactorings. Language-specific refactorings help you perform project-wide changes in a matter of clicks, which can​ all be safely undone.

Easy Debugging and Testing

PhpStorm is renowned for its zero-configuration Visual Debugger, providing extraordinary insight into what goes on in your application at every step. It works with Xdebug and Zend Debugger, and can be used both locally and remotely. Unit Testing with PHPUnit, BDD with Behat and profiler integration are all also available.

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 производит анализ всего кода, а не только нескольких строк в видимой части экрана. В этом случае варианты, которые вам предлагаются на выбор, абсолютно точны.

Топ-пост этого месяца:  Урок 5. Шаблонизатор Twig. Фильтры

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

Теперь, когда фрагмент кода, который мы хотим извлечь, идентифицирован, наш следующий шаг — назвать его. « 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 мне нужно соблюдать определенный набор тегов и других элементов форматирования.

Топ-пост этого месяца:  VDS VPS что это такое, чем отличается, разница, что выбрать

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

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

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

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

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

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

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

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

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

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

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

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

Настройка >

Подробно описываем настройку 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 для отладки расширений.

Как встроить gitlab в phpstorm?

Подскажите как подключить GitLab к PhpStorm, ничего не могу найти на эту тему

  • Вопрос задан более двух лет назад
  • 3796 просмотров

Как встроить gitlab в phpstorm?

В каком смысле «встроить»? Вы можете на GitLab’e создать проект/репозиторий, получить его ссылку и делать pull/push/etc Вашего местного (локального) git-репозитория с проектом в удаленный репозиторий, лежащий на GitLab’е.

Делается это примерно в следующем порядке:
0. Создаёте/открываете Ваш проект в ПХПШторме
1. Меню -> VCS -> Enable version control integration, и там выбираете Git
2. Нажимаете правой кнопкой на папке проекта в Шторме, и далее по меню:

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

Собственно и всё почти. При попытке Push/Pull — у Вас запросят логин/пароль от GitLab’а.

PHP Storm c Git настройка и работа для новичков

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

PHPStorm это IDE среда, для разработки на PHP, в этой статье я хочу кратко рассказать о том как PHPStorm настроить работу с GIT инструментом и создать репозитории на github.com (это хостер для GIT)

Настройка PHP Storm

Для начала версия, на которой буду настраивать GIT. Дополнительно установим утилит git с официального сайта, с помощью нее PHPStorm будет работать с github, скачиваем ее отсюда https://git-scm.com/downloads

Подключаем утилиту GIT к Шторму

После установки этой консольной утилиты, уже в принципе можно работать с github, конечно для этого нужно знать консольные команды и быть упоротым линуксойдом (но это не про нас, ну не про меня точно, я пробовал работать с гитом через консоль))) Шторм сделает все за нас. Запускаем PHPStorm и заходим в Settings (Ctrl+Alt+S), там нужно найти в разделе «Version Control» пункт «Git», на скрине ниже все подробно:

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

Создаем локальный репозиторий из PHPStorm

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

VCS ->Import into Version Control -> Create Git Repository…

Для визуалов и любителей не читать сделал скрин и шот

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

Нажимаем Ok, в папке появится папки .idea и .git, не трогайте и не задавайте вопросов, так нужно.

После того как проект проиндексируется, в правом нижнем углу (тем где часики, но повыше) PHPShtorm появится вот это

Master — это основная ветка GIT, можно работать в ней, можно сразу сделать новую ветку (Branch), но для этого нужно в Master сделать хотя бы один Commit (сохранить состояние).

Сделать коммит просто, я думаю вы уже догадались как, поэтому не буду это описывать, вот диалоговое окно, комментарий/сообщение к коммиту обязателен, я там написал что он первый, конечно соврал, ведь он нулевой, мы ведь программисты с 0 считаем =)

Ладно, шутка, ясен пень вы не знаете как сделать коммит, просто нажмите Ctrl+K или сходите в меню

Теперь можно сделать новую ветку, в которой можно вносить изменения, которые ни как не отразятся на другой ветке, я создал ветку «renttools», мне заказали лэндинг по прокату инструмента, буду делать на основе html шаблона, так как проект является стартапом и круто делать не нужно, нужно не дорого но качественно

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

Подключение PHPStorm к Github

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

Даем новому репозиторию любое имя

После этого получаем ссылку от github которую нужно скопировать

и вставить уже в PHPStorm через меню

вводим любое понятное название в появившемся диалоговом окне и вставляем ссылку которую скопировали на github после создания удаленного репозитория

Все, удаленный репозиторий подключен, теперь можно пушнуть свой коммит на github, т.е. мы коммитим локально сколько угодно точек сохранений, а потом просто с помощью Ctrl+Shift+K отправляем это все на удаленное хранилище, что я и сделал

Теперь можно перейти в репозиторий на github и посмотреть как залились файлы коммита

Что бы отправить вторую ветку, в моем случае это «renttools» нужно в PHPStorm в нее перейти, и сделать Commit а затем Push

Заключение

В общем то все, статья просто описывает только настройку IDE PHPStrom и GIT инструмента, и не претендует на исчерпывающее руководство по работе с контролем версий на основе Git, по этой теме очень много информации в сети, сам еще не совсем в теме))))

Урок 16. Редактор кода IDE PhpStorm. PhpStorm и GitHub

We recommend upgrading to the latest Google Chrome or Firefox.

Join GitHub today

GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.

phpstorm-ide-settings / editor.codeinsight.xml

application >
component name = » CodeFoldingSettings » >
option name = » COLLAPSE_IMPORTS » value = » false » />
option name = » COLLAPSE_DOC_COMMENTS » value = » true » />
component >
component name = » CodeInsightSettings » >
option name = » SHOW_PARAMETER_NAME_HINTS_ON_COMPLETION » value = » true » />
option name = » PARAMETER_INFO_DELAY » value = » 250 » />
option name = » AUTO_POPUP_JAVADOC_INFO » value = » true » />
option name = » SURROUND_SELECTION_ON_QUOTE_TYPED » value = » true » />
component >
component name = » PhpCodeFoldingSettings » >
option name = » COLLAPSE_HERE_DOCS » value = » true » />
option name = » COLLAPSE_IMPORTS » value = » false » />
component >
application >
  • © 2020 GitHub , Inc.
  • Terms
  • Privacy
  • Security
  • Status
  • Help

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

PhpStorm — как подключиться к GitHub

Описание процесса подключения репозитория GitHub для PhpStorm-а. Это позволяет напрямую из программы работать с Git-ом, а также иметь удобный контроль версий.

Подключение к GitHub

Заходим в пункт меню:

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

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

А возможно потребуется ещё инициализировать GIT.

Инициализация GitHub для PhpStorm

Заходим в настройки PhpStorm во вкладку Version Control:

Здесь на кнопку плюсик. Выбираем директорию с содержимым GIT репозитория. Репозиторий GitHub может быть одной и той же папкой, что и текущий проект PhpStorm. А в пункте VSC выбираем Git.

Пройти видеокурс по 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

Активация JetBrains PhpStorm в несколько кликов

Вот уже долгое время я являюсь ярым фанатом замечательной IDE от JetBrains — PhpStorm. Эта IDE мне подходит во всем, начиная от ее скорости работы и заканчивая гибкостью и возможностью с комфортом кодить. В PhpStorm меня на 100% все устраивает, но есть всегда одно «НО», а именно стоимость этого продукта и в последнее время полное отсутствие «кряков» и других программ позволяющих грамотно активировать PhpStorm IDE. Далее я опишу свой простой метод активации этой замечательной IDE…

Для начала

Внимание!

Перед началом, я хочу уделить особое внимание тому, что в статье я работаю с Php Storm версии 2020.2, поэтому возможно будут присутствовать небольшие различия в других версиях. В любом случае я не думаю, что с момента написания этой статьи, в активации PhpStorm что-то измениться, но все равно перестраховаться стоит ��

Для начала, давайте посмотрим, какие способы активации присутствуют в IDE:

  1. Активация через JetBrains аккаунт (это нам явно не подходит);
  2. Активация через код активации (этот метод работал раньше, но теперь код проверяется через аккаунт);
  3. Активация через лицензионный сервер — то что нам нужно.

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

Активация PHPStorm через сервер

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

  1. Качаем архив с серверами;
  2. Запускаем сервер в зависимости от ОС. У меня Windows поэтому я запускаю IntelliJIDEALicenseServer _windows_amd64.exe в Ubuntu можно просто добавить расширение .sh к файлу ( например IntelliJIDEALicenseServer_linux_amd64.sh ), задать chmod 777 и запустить ./IntelliJIDEALicenseServer_linux_amd64.sh ;
  3. Запускаем PHPStorm и переходим в меню Help->Register…;
  4. Вставляем в поле License server address IP, который выдал сервер при запуске. У меня к примеру адрес такой — http://127.0.0.1:1017;
  5. Нажимаем кнопку Activate;
  6. PROFIT!

Альтернативные способы активации

UPD: 20.01.2020

Для версий PhpStorm выпущенных начиная с 2020 года ( 2020.3.3 ++), сервер выше, работать не будет (возможны исключения). Поэтому, скачайте новую версию. Адрес для активации — http://127.0.0.1:1027. Пользователи Windows возможно будут получать следующую ошибку — Only one usage of each socket address is normally permitted, при запуске сервера.

Для исправления ошибки, делаем следующие шаги:

  1. win + R -> cmd -> netstat -ano -> в правом столбце ищем № PID-а который использует порт 1027 и запоминаем ;
  2. ^ + alt + delete -> Диспетчер задач -> Вкладка Подробности -> сортируем столбец ИД или PID и убиваем процесс с номером из 1 шага ;
  3. Выполняем шаги из списка выше, начиная со 2 пункта.

P.S Если мое решение не помогло, пробуйте эту инструкцию.

В общем и целом, в конечном итоге у вас должно получиться примерно как на скриншоте ниже:

UPD: 04.02.2020

Сегодня после очередного обновления PhpStorm, обнаружилось, что дырку с активацией через сервер закрыли. Пока временным (или нет) решением является активация по этой инструкции (web archive т.к оригинальная статья была удалена). Также, для linux можно попробовать использовать следующий bash скрипт для бесконечного триала:

Работа с Git в PhpStorm (JetBrains)

В прошлой статье мы говорили о том как создать Git репозиторий. Теперь поговорим о том как им пользоваться из IDE PhpStorm.

Создание нового клона

  1. Если создаем проект из лаунчера.
    Checkout from Version Control: Здесь можно выбрать GitHub, если проект хранится на GitHub’е (тогда нужно будет ввести только данные для аутентификации) или Git, если проект находится на другом сервере, тогда необходимо ввести данные для соединения с сервером:
    • Get Repository URL — адрес до репозитория в формате: ssh://ИмяПользователяХостинга@адресхостинга/полный/путь/до/репозитория. Адрес хостинга рекомендую указывать в виде ip. Так при работе не тратится время на соединение с DNS сервером, чтобы получить этот самый ip.
    • Parent Directory — это локальная настройка. Полный путь до папки-родителя локального сайта (в денвере по умолчанию всегда папка с именем сайта)
    • Directory Name — папка сайта (в денвере по умолчанию всегда www). Если эта папка уже существует, IDE предупредит об этом.
  2. Если запущен проект то все это находится в меню VCS.

Инициализация проекта

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

  1. Иницииализируем: VCS->Enable Version Control Integration. выбираем Git и жмем Ok.
  2. Добавляем файлы в первую фиксацию. Жмем Ctrl+Alt+A или ПКМ(по корню проекта)->Git->Add to VCS.
  3. Фиксируем файлы. VCS->Commit Changes. внизу вписываем коммент (например First fixation ), вверху добавляем автора. Жмем Commit. (можно сразу сделать Commit и Push выбрав соответствующий пункт в селекте Commit )

В дереве проекта по умолчанию не отображаются папки, в которых есть изменения. Чтобы их показать идем сюда: File->Settings->Version Control: Show directories with changed descendants.

Топ-пост этого месяца:  2 новые функции в Инстаграм скрытие комментариев и премодерация
Добавить комментарий