TECHNOLOGIE

PHPStorm od kuchni

15.04.2016
Przeczytasz w 6 min.:

Od jakiegoś czasu coraz więcej programistów/osób piszących w PHP w firmie korzysta z JetBrainsowego PHPStorm. To potężne narzędzie ma pełno różnych feature’ów/pluginów, a o istnieniu wielu z nich często nie zdajemy sobie sprawy. Chcąc wymienić się wiedzą o nich, wypiszę o tych, z których często i regularnie korzystam i zachęcam do dopisywania kolejnych.

Ciekawe skróty/funkcje

1) Wyszukiwarka w Ustawieniach

Mały bajer, a niesamowicie przydatny, na początku trudno mi było się przyzwyczaić do jej istnienia. Szukanie jednej opcji w całym drzewie byłoby tragicznie trudne, teraz wystarczy wiedzieć jak mniej-więcej może nazywać się interesujące nas ustawienie i można je od razu znaleźć. Nawet jak niżej będę podawał całą “ścieżkę” do opcji, to wystarczy wpisać tylko jej nazwę.

824b4aa

2) Code Completion po pierwszych znakach

Większość rozsądnych IDE wspiera podpowiadanie nazw klas, tak że jak napiszę “Pan”, to pojawi mi się cała lista klas zaczynających się od tych liter. Jednak PHPStorm ma tą funkcjonalność mocno na sterydach i szuka po też po pierwszych znakach słów w nazwach obiektów (klas itp). Czyli jak napiszę po prostu “PWICM” dostanę tylko jedną podpowiedź – Panel_Workflow_ImportedCompanies_Model. Nie muszę się ograniczać tylko do pierwszych liter. Mogę wpisać “ZCapB” i dostanę podpowiedź “Zend_Captcha_Base” (z samym “ZCB” dostałbym też sporo wyników z Zend_Cache_B*).

3) Generate (Alt + Ins)

Wyświetla w danym kontekście różne boilerplate-owe kody możliwe do automatycznego wygenerowania. Na przykład w kontekście klasy będą to Gettery/Settery dla pól, czy bloki PHPDoc.

7e9d364

4) Rename (Ctrl + R)

Zmienia nazwę elementu w danym kontekście. Jeżeli wskaźnik kursora jest na nazwie klasy, to zmieni nazwę klasy i wszystkie jej wywołania, z możliwością również zmiany nazwy pliku. Podobnie przy metodzie. Dodatkowym bajerem jest to, że zmieniając nazwę pola klasy, analogicznie zmienią się również jej getter i setter.

814ba42

5) Refactor (Ctrl + Shift + Alt + T)

Uogólnienie Ctrl + R. Pokazuje menu z wszystkimi możliwymi opcjami refaktoryzacji w danym kontekście. Na szczególną uwagę zasługuje tu pozycja Extract -> Interface, która pozawala błyskawicznie stworzyć interfejs na podstawie danej klasy.

8072889

6) [wyrażenie].if (od PHPStorma 9)

dopisanie na koniec linii “.if” tworzy z tej linii wyrażenie w ifie. Oczywiście takich postfiksów jest więcej, całą lista dostępna w Settings->Editor->General->Postfix Completion. Protip #1: w liście podpowiedzi te postfiksy pojawiają się na końcu, wystarczy więc przy .var_dump zrobić strzałkę w górę. Protip #2: Code completion z wyżej działa również tu – czyli wystarczy .vd i strzałka w górę.

7) Zaznaczanie kolumnowe (Alt + Shift + Insert)

Bardzo potężne narzędzie – przełącza PHPStorma w tryb zaznaczania kolumnowego, co pozwala ustawić kursor na kilku liniach na raz, przejść np. na ich sam koniec (przycisk “End”) i coś dopisać. Poniżej gif obrazujący jak można w szybki sposób, z zapytania tworzącego tabelę w bazie danych (tu przykład z pierwszego lepszego schema.sql na githubie) wygenerować klasę reprezentującą wpisy w niej:

088e4b0

W skrócie – kopiuje zapytanie (jego fragment) do ciała klasy, przechodzę w tryb kolumnowy i zaznaczam wszystkie wiersze. Zaznaczam i wycinam pierwsze słowo każdego wiersza (Ctrl + Shift + Strzałka w prawo). Zaznaczam resztę i usuwam, wklejam wycięty przed chwilą tekst, który z powrotem zaznaczam. Tu używam pluginu “CamelCase” (więcej poniżej) do przekonwertowania konwencji nazewnictwa na camelCase wszystkich pól na raz. Dopisuję w końcu przedrostek “protected $_” i voila. Dodatkowo mogę od razu przejść do Generowania (pkt 3) i wygenerować gettery, settery i bloki PHPDoc. W mniej jak minutę.

8) Show line numbers

Domyślnie PHPStorm nie pokazuje numerów linii, co mnie osobiście bardzo drażniło. Jakby komuś umknęło, to Editor -> General -> Appearance -> show line numbers

9) Pokaż w projekcie (NetBeansowe Select in Project)

W NetBeansie można było kliknąć PPM na otwarty plik i wybrać opcje “Select in project” by zobaczyć go w drzewie projektu. W PHPStormie ta opcja jest ukryta pod znaczkiem “celownika” na belce nagłówka okna “Project”. Dodatkowo po kliknięciu PPM na sam nagłówek i wybraniu opcji “Autoscroll from source”, obecnie aktywny, otworzony plik sam będzie się wybierał w drzewie.

8321392

10) Menu wyszukiwania plików/symboli (Ctrl + Shift + N; Ctrl + Alt + Shift + N; Shift, Shift)

Ctrl + Shift + N otwiera menu pozwalające na wybranie pliku. Analogiczne do NetBeansowego skrótu Alt + Shift + O. Można tu również wskazać ścieżkę lub jej część, czyli na przykład napisanie “Tags/Entity” mocno zawęzi nam wyniki. Drugi skrót, Ctrl + Alt + Shift + N pozwala nam na wyszukiwanie plików po nazwach symboli – klas/funkcji. Ostatni skrót, czyli dwukrotne naciśnięcie Shift otwiera hybrydę dwóch poprzednich – wyszukiwanie równoczesne i po nazwie pliku i po nazwie symbolu. Code completion z drugiego punktu działa również w tych oknach.

83ec22e

11) Help -> Productivity Guide

Okno, dzięki któremu odkryłem niejedną z pozycji wyżej. Pokazuje listę funkcji przyspieszających pracę wraz z stopniem jej użycia przez użytkownika. Warto zajrzeć i przeanalizować znajdujące się pozycje, bo można odkryć bardzo przydatne narzędzia. Dobrze jest też regularnie otwierać to okno i skupić się na jednej rzeczy z “Never” tak, by weszła w nawyk.

7f95c99

Ciekawe pluginy

1) .ignore
Przydatny plugin ułatwiający pracę z plikami w stylu .gitignore.

2) MultiMarkdown/Markdown support

Dwa z trzech dostępnych na tą chwilę pluginów do plików .MD. Ten trzeci polecam odpuścić, bo robi jakąś część tego co te dwa, przy czym one robią to lepiej. Pierwszy pokazuje podgląd edytowanego dokumentu w osobnej zakładce jak i wygenerowany kod HTML. Drugi, oficjalny od JetBrains, również oferuje podgląd, ale jako split edytora (czyli z jednej strony mamy treść pliku MD, a z drugiej jego podgląd. Dla osób korzystających z ciemniej wersji PHPStorma, od razu polecam wejść w Settings->Languages & Frameworks -> Markdown i zmienić plik .css z default.css na darcula.css.

3) CamelCase

Plugin, o którym wspomniałem już wcześniej. Dodaje opcje konwertowania ciągu znaków miedzy różnymi konwencjami, na przykład camelCase, CamelCase, camel_case, CAMEL_CASE. Opcja ta znajduje się domyślnie pod skrótem Alt + Shift + U.

4) CodeGlance

Dodaje okno, znane np. z Sublime, pokazujące “podgląd” edytowanego pliku, czyli jego treść znacznie pomniejszoną, z możliwością nawigowania.

Integracja z PHPUnit

PHPStorm pozwala w łatwy sposób odpalać testy, zarówno lokalnie jak i na zdalnych środowiskach. Dodatkowo zlicza też pokrycie kodu i prezentuje raport zintegrowany z IDE co pozwala na znacznie łatwiejszą analizę.

Podpinanie odpalania testów lokalnie

Wybieramy Settings -> Languages & Frameworks -> PHP. Przy pozycji Interpreter klikamy na “…” i po lewej stronie klikamy na “+”. Jeżeli mamy u siebie zainstalowanego PHP, powinien on nam się pojawić na liście (być może trzeba będzie wybrać binarkę ręcznie, poprzez wybranie “Other Local”). Po dodaniu i zamknięciu okna z interpreterami wybieramy dodany dopiero co interpreter i dajemy Apply.

Dalej w zakładce PHPUnit, w tej samej “przestrzeni” ustawień, ustalamy ścieżkę do phpunita. Ja nie mam u siebie lokalnie zainstalowanego, ale z reguły jest w composerze odpowiednia zależność. Dlatego zamiast “Load from include path” wybieram “Use custom autoloader” i wybieram plik autoloader.php w katalogu vendor/ – warto pamiętać o composer install  .

Ostatnim krokiem jest przejście do menu górnego “Run” -> Edit Configurations, kliknięcie na “+” z lewej strony i wybranie PHPUnit. Warto wybrać w “Test scope” pozycję “Defined in configuration file” i w “Use alternative configuration file” wskazać odpowiedni plik konfiguracyjny PHPUnita dla projektu. I koniec, zapisujemy.

Teraz w górnym menu “Run” możemy odpalić utworzoną konfigurację która uruchomi nam odpowiednie testy.

Podpinanie odpalania testów zdalnie (przez SSH)

Testy w repo trans-web/trans trudno jest odpalić lokalnie, ale PHPStorm radzi sobie bez problemu z odpalaniem testów na zdalnych maszynach:

Podobnie jak w przypadku lokalnego uruchamiania, trzeba najpierw dodać interpreter PHP, tym razem zdalny. Wybieramy Settings -> Languages & Frameworks -> PHP. Przy pozycji Interpreter klikamy na “…” i po lewej stronie klikamy na “+”. Z menu wybieramy “Remote…” po czym podajemy dane do połączenia – można wybrać “Deployment configuration” i wybrać ustawienie to samo, które dany projekt ma podpięte do uploadu. Po dodaniu i zamknięciu okna z interpreterami wybieramy dodany dopiero co interpreter i dajemy Apply.

Kolejne kroki są dokładnie takie same jak w przypadku testów zdalnych. Jedyną różnicą będzie to, że ścieżka do autoload.php będzie podana zdalna.

Udostępnij
Czy ten artykuł był pomocny?
Tak0
Nie0