На чем написан phpstorm

PHPStorm: Когда IDE действительно имеет значение

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

Культура

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Управление проектами — это довольно типичная для IDE функция. Все ваши файлы организованы в проекты. Но программисты JetBrains сделали кое-что действительно удивительное.

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

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

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

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

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

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

Источник

Вышел PhpStorm 2021.3

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

В этом релизе мы полностью поддержали PHP 8.1, улучшили обработку дженериков, реализовали drag-and-drop для перемещения классов и пространств имен, обновили HTTP-клиент, повысили удобство процесса развертывания и управления версиями, а также добавили новые возможности удаленной разработки.

Под катом подробный разбор всех изменений и новых возможностей с кучей гифок.

Скачать PhpStorm можно на сайте или через приложение Toolbox App.

Как и раньше, студентам, преподавателям и тем, кто занимается опенсорс-проектами, JetBrains предоставляет бесплатные лицензии. Стартапам доступна скидка 50%.

Итак, вот что мы подготовили для вас в этом обновлении:

Полная поддержка PHP 8.1

Улучшения рефакторингов

Более быстрый и улучшенный деплоймент

HTTP клиент

Обновления UX

PHP 8.1

PHP 8.1 уже вышел! Подробнее об обновлениях языка можно узнать из видеоролика, который мы подготовили совместно с Brent Roose и авторами разных RFC: Larry Garfield, Matheu Napoli, Aaron Pietrowski, Дмитрий Стогов, Никита Попов.

PhpStorm 2021.3 полностью поддерживает изменения, введенные PHP 8.1. Подробнее об этом рассказываем ниже.

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

Перечисления

Вместо набора констант теперь можно использовать перечисления (enum). Они обеспечат проверку типов из коробки.

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

Поддержка перечислений появилась в PhpStorm еще в релизе 2021.2. Подробнее об этом читайте в предыдущем хабрапосте.

Readonly-свойства

Свойства с флагом readonly — это свойства, которые нельзя изменить после инициализации (то есть после присвоения им значения).

В предыдущих версиях PHP можно было добиться похожего поведения с помощью приватных сеттеров. Однако ключевое слово readonly позволяет сделать класс более читаемым, а ограничение — более строгим.

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

Свойство readonly может быть инициализировано только в той же области видимости, в которой оно объявлено, то есть в самом объявлении либо в методе класса.

Если вы проинициализировали свойство readonly объектом, то этот объект (его внутреннее состояние) останется изменяемым.

У свойства readonly не может быть значения по умолчанию. Однако такое свойство можно инициализировать в конструкторе: нажмите Alt+Enter, чтобы применить соответствующее быстрое исправление:

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

Пересечения типов

В PHP 8.0 были добавлены объединения типов (union). А теперь в PHP 8.1 появились пересечения (intersection).

В PhpStorm 2021.3 автодополнение типов union и intersection устроено одинаково, ведь их различие только в том, что union может содержать члены всех указанных типов, а intersection должен содержать члены этих типов.

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

Комбинации с типами union PHP пока не поддерживает. Поэтому такое выражение будет считаться ошибкой:

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

В более старых версиях PHP можно было встретить пересечения типов в аннотациях PHPDoc. Они тоже поддерживаются в PhpStorm 2021.3. Когда вы решите перейти на PHP 8.1, то сможете легко трансформировать аннотации PHPDoc в нативные определения с помощью Alt+Enter:

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

Новый тип never

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

Финальные константы

PHP 8.1 позволяет объявлять константы класса как финальные, после чего их нельзя переопределить в дочерних классах.

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

В PHP 8.0 и более ранних версиях языка константы в интерфейсах были неявно финальными, и их нельзя было изменить. В PHP 8.1 эту неконсистентность убрали: теперь константы по умолчанию — не финальные.

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

Оператор new в инициализаторах

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

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

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

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

Синтаксис First-class callable

В PHP 8.1 появилась возможность получить ссылку на любую функцию.

Раньше это нужно было делать вот так:

Теперь все гораздо проще:

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

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

Вызовы fromCallable можно преобразовать к новому синтаксису. Для этого нажмите Alt+Enter и выберите нужное быстрое исправление:

Устаревшие возможности

PHP порой удивлял своим причудливым поведением. Но с каждой новой версией языка проблем в нем становится все меньше. И PHP 8.1 не исключение: многие проблемные места объявлены устаревшими.

Чтобы перевести проект на PHP 8.1, прежде всего нужно поправить совместимость и свериться со списком устаревших возможностей.

PhpStorm поможет найти устаревший код и обновить его.

Вот пара примеров устаревших возможностей.

Использование интерфейса Serializable

PhpStorm выделит неправильный код и предложит добавить магические методы в класс при помощи быстрого исправления:

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

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

Подробнее об устаревших возможностях PHP можно узнать в руководстве по обновлению.

Улучшения для дженериков

В PhpStorm 2021.2 появилась долгожданная базовая поддержка дженериков. Мы продолжаем ее совершенствовать. Спасибо за ваши отзывы и тикеты в трекере!

Вот что нам удалось сделать в этом релизе:

Улучшение поддержки Doctrine Collections

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

Поддержка коллекций Laravel 9

В ближайшем выпуске Laravel, пакет illuminate/collections будет покрыт аннотациями дженериков. В PhpStorm 2021.3 для них автоматически заработает автодополнение кода.

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

Вывод дженерик-типов из конструктора

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

Поддержка аннотаций phpstan-*

Улучшенные рефакторинги

Перемещение классов и неймспейсов с помощью drag-and-drop 🎉

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

Теперь вы можете перемещать файлы и даже целые папки, используя drag-and-drop. PhpStorm сам обновит неймспейсы в классах и во всех их использованиях!

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

Рефакторинг Move Class / Move Namespace поможет вам легко реструктурировать проект. Ну а если что-то пойдет не так, то всегда можно отменить рефакторинг, нажав Ctrl-Z.

Чтобы этот рефакторинг работал, необходимо правильно настроить PSR-0 / PRS-4.

Мы переработали рефакторинги Inline method, Inline variable, Extract variable и Extract method. Они стали работать более надежно и предсказуемо. Попробуйте их!

Inline function or method

Когда тело метода более очевидно, чем его название, имеет смысл заменить вызовы метода его содержимым, асам метод удалить.

Чтобы использовать этот рефакторинг, поместите каретку на вызов метода и нажмите Ctrl+Alt+N (⌥⌘N на macOS).

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

То же самое с приватными методами, используемыми всего один раз. Вы можете встраивать их при помощи нового быстрого исправления Inline method, доступного также по Alt+Enter:

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

Inline variable

Порой лишние переменные только загромождают код.

Вы можете заменить ссылку на переменную самим выражением, поместив каретку на переменную и нажав Ctrl+Alt+N (⌘⌥N на macOS).

Если переменная используется только один раз, ее можно заменить при помощи быстрого исправления (Alt+Enter):

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

Если вы не помните название рефакторинга или сочетание клавиш для его вызова, просто нажмите Ctrl+T (⌃T) и найдите нужный рефакторинг в списке.

Удаленная разработка

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

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

Функция удаленной разработки доступна на начальном экране PhpStorm, а также в новом приложении JetBrains Gateway (чтобы установить его, воспользуйтесь Toolbox App).

Пока что возможности удаленной разработки доступны в бета-версии. Мы продолжаем активно дорабатывать их.

Улучшенные возможности развертывания

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

Все настройки развертывания доступны в Settings/Preferences | Build, Execution, Deployment | Deployment.

Поддержка rsync

rsync выключен: 6.26 минут
rsync включен: 38.192 секунд — в 9 раз быстрее!
Чтобы включить rsync, перейдите в настройки SFTP-сервера и поставьте флажкок `Use rsync for download/upload`:

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

Путь к исполняемому файлу rsync настраивается в разделе Settings/Preferences | Tools | Rsync:

Для macOS и Linux он должен быть доступен сразу же. Для Windows мы рекомендуем использовать Cygwin и OpenSSH.

Повторная загрузка файлов

Загрузка файлов на сервер может зафейлиться по разным причинам. В таком случае вы сможете легко повторить загрузку.
Если загрузка сорвется, вы увидите ссылку Retry в окне File Transfer.

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

Speedup for SFTP/FTP/FTPS with multithreaded connection

Мы подготовили долгожданную реализацию многопоточного развертывания. Поддерживаются операции upload, download и drag-and-drop. Синхронизация и автоматическая загрузка пока не поддерживаются.
Новая опция Number of connections находится в секции Advanced в конфигурации SFTP/FTP/FTPS сервера. Число подключений по умолчанию — 5:

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

Новое действие Upload all opened files

Если у вас открыто несколько файлов в разных вкладках, то теперь можно загрузить их все одной командой, Upload All Open Files to…. Она доступна в разделе Tools | Deployment, через поиск по командам (Cmd/Ctrl+Shift+A), или из контекстного меню любого файла.

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

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

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

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

Поддержка прокси для SSH-соединений

Теперь можно указать прокси-сервер HTTP или SOCKS для SSH-конфигураций в Preferences / Settings | Tools | SSH Configurations.

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

Также можно синхронизировать настройки SSH-прокси с глобальными настройками IDE. Для этого установите флажок Use global IDE proxy settings.

Улучшения HTTP-клиента

Поддержка текстовых и JSON стримов

Теперь стало проще тестировать потоковые приложения, потому что версия PhpStorm поддерживает следующие типы контента: text/event-stream, application/stream+json и application/x-ndjson. Это означает, что HTTP-клиент больше не будет ждать окончания стрима, а будет отображать сразу вывод на лету.

Бинарные ответы в HTTP-клиенте

Теперь, если HTTP-клиент получает в качестве ответа изображение, он отображает картинку в консоли ответа.

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

Перенаправление вывода в файл или каталог

Поддержка идентификаторов HTTP-запросов

PhpStorm 2021.3 теперь понимает идентификаторы (или имена) для запросов — как объявленные в виде комментария (с @name ), так и объявленные в виде текста в первом разделителе ( ### ).
Вы сможете вызывать запрос по идентификатору из окна Services, а также из диалоговых окон Run Configuration, Run Anything или Search Everywhere.

Выравнивание изменений при просмотре Diff

Мы добавили новую опцию Align Changes Highlighting в окне Diff под шестеренкой.

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

Checkout and Rebase onto Current для удаленных веток

Действие Checkout and Rebase onto Current позволяет сделать чекаут выбранной ветки и перебазировать ее поверх текущей ветки. Раньше это работало только для локальных веток, а теперь возможно и для удаленных.

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

Реорганизация настроек VCS

Настройки системы контроля версий доступны в Preferences/Settings | Version Control. Мы по-новому структурировали их — теперь вам будет легче находить нужные действия.

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

Новое действие Push All up to Here

Если вы хотите сделать push части коммитов, а другую часть пока оставить в работе, можете использовать новое действие Push All Up to Here.

Просто перейдите на вкладку Log окна Git, выберите нужный коммит и, щелкнув по нему правой кнопкой мыши, выберите действие Push All up to Here.

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

Новое окно Bookmarks

Мы объединили сущности Favorites и Bookmarks в одну и создали отдельное окно Bookmarks.

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

Вы можете добавить закладку для определенной строки, файла или папки, нажав F3 на macOS или F11 на Windows/Linux. Все созданные закладки будут доступны в окне Bookmarks.

Просмотр кода в Show Usages

Диалоговое окно Show Usages, доступное по Ctrl+Click (⌘+Click) теперь показывает превью исходного кода для найденного использования.

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

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

Улучшения для Markdown

Одной из самых муторных проблем при редактировании markdown всегда было добавление и редактирование таблиц. В PhpStorm 2021.3 эта проблема решена.

Теперь достаточно открыть контекстное меню (в любой точке markdown-файла) и выбрать Insert | Table. И это все! Размер исходной таблицы можно выбрать мышкой.

Для создания новой строки таблицы можно использовать Shift+Enter, а для перехода к следующей ячейке — Tab.

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

Инструменты для работы с БД

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

Веб-разработка

А вот видеоролик (на английском), представляющий главные фичи нового релиза:

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

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *