Přejít k navigační liště

Zdroják » PHP » Jak být produktivní v PHPStormu (část 1.)

Jak být produktivní v PHPStormu (část 1.)

Články PHP, Webdesign

Programování je podle mého napůl umění a napůl řemeslo. A jako řemeslníci bychom měli znát své nástroje. Tak jako zedník zná rozdíl mezi lžící, špachtlí a fankou a ví, kterou na co použít, tak i vývojář by měl znát svoje IDE.

Vývojářem se člověk často stane tak nějak mimoděk, ve volném čase, aniž by se na to nějak soustavně připravoval nebo studoval. A i ve škole se učíme jen teorii programování – co jsou to podmínky, cykly a tak podobně. Ale programování je podle mého napůl umění a napůl řemeslo. A jako řemeslníci bychom měli znát své nástroje. Tak jako zedník zná rozdíl mezi lžící, špachtlí a fankou a ví, kterou na co použít, tak i vývojář by měl znát svoje IDE.

Sám musím přiznat, že jsem dlouho psaní v IDE odolával. Všechno jsem psal v PSPadu a naprosto jsem nechápal, jak někdo může psát v něčem, co minutu startuje (před příchodem SSD to bylo normální). Pak jsem, potom co jsem k certifikaci dostal licenci Zend Studia (vylepšené Eclipse), přešel na IDE. Už v té době mělo slušné možnosti refaktoringu a napovídání kódu. Teď je to přibližně tři roky, co jsem si poprvé nainstaloval PHPStorm a zkusil v něm chvíli pracovat.

Po těch třech letech jsem s tím, jak PHPStorm umím používat, docela spokojený. Proto vám chci nyní ukázat, jak být za pomoci PHPStormu produktivnější a jak naplno využít možnosti, které poskytuje. Popisovat budu poslední verzi – průběžně během psaní článku upgraduji na nové verze v rámci Early Access Programu. Zmíněné rady jsou z velké části společné pro všechny JetBrains produkty, takže pokud píšete v InteliJ IDEA, PyCharmu, Webstormu nebo CLionu, tak si z článku určitě také něco odnesete.

Na začátek je potřeba upozornit na to, jak v PHPStormu fungují Settings. V menu najdete kromě File > Settings také File > Default settings. První jmenované mění nastavení projektu, druhé je použité u nových projektů. Doporučuji upravit defaults a pak případně založit nové projekty. Je to lepší než postupně upravovat třeba dvacet projektů nebo mít rozházené nastavení. V Settings se dá vyhledávat pomocí pole nahoře (nebo prostě jen začnete psát). Nebudu tedy zmiňovat, kde přesně nastavení je, ale jen jak se jmenuje, snadno si ho najdete sami. Obrázky v článku jsou animované gify. Otevřete si je v lightboxu, abyste viděli animaci.

Jak se dostat tam, kam potřebuji?

Začneme pozvolna. Nejčastější činností při programování je hledání a otevírání souborů. Během dne jich otevřu, zavřu a zas otevřu stovky, ne-li tisíce. U takto časté činnosti se vyplatí optimalizovat. PHPStorm už v minulé verzi zařadil Search Everywhere – inspirace SublimeTextem z toho kouká na každé kliknutí. Můžete v něm vyhledávat cokoli v celém IDE. Soubory, složky, třídy, metody a dokonce i funkce samotného IDE.

searcheverywhere

Ve výchozím stavu se vyvolává dvojitým stiskem Shift. Já doporučuji přemapovat – často se mi stávalo, že jsem zkratku mačkal omylem při psaní a jindy se mi stalo, že jsem ji nezmáčknul dobře, když jsem chtěl (nakonec jsem skončil u Ctrl+Shift+X, která je pro mě snadno stisknutelná bez zbytečného vytáčení rukou).

V Search Everywhere můžete vyhledávat nejen celá slova a názvy, ale můžete psát i camelCase a vyhledávat v rámci složek. Například předpokládejme, že chci vyhledat viewčko index.phtml, které odpovídá product-parameters controlleru. Pokud dám hledat index.phtml, najde mi to milion souborů s tímto názvem. Pokud ale vím, že soubor je ve složce modules/default/views/scripts/product-parameters/index.phtml, tak stačí napsat d/v/pp/index (tedy d(efault)/v(iews)/p(roduct)p(arameters)/index). Všimněte si, že není třeba napsat všechny kroky cesty a v rámci složek je možno používat všechny možné myslitelné oddělovače (pp = product-parameters, samotné „p“ by našlo products, pages,…). To samé platí pro názvy tříd. Třídu Admin_ProductsController najdete snadno jako APrC. Můžete napsat kolik písmen chcete, víc nebo míň. Pokud neznáte přesné jméno souboru, ale víte, že je v nějaké složce, tak i složky jdou hledat a otevřou se v postranním Project panelu.

Search Everywhere je možné použít i na funkce IDE, na které není nastavená zkratka. V mém případě např. File encoding, Use soft wraps nebo Override methods. Při určitém množství zkratek, které člověk používá, přestane být efektivní se učit další, speciálně pokud je nepoužívá často. A tato funkce je spolehlivě nahradí. Samozřejmě camelCase hledání funguje i v tomto případě – tedy například FEnc vám najde File encoding.

Od doby, co jsem přešel na Search Everywhere, používám postranní panel se složkami prakticky jen pokud edituji víc souborů v jedné složce. S čímž souvisí druhá důležitá věc, která je (pro mě nepochopitelně) ve výchozím stavu vypnutá, a to Scroll from source. Najdete ji pod ozubeným kolečkem na postranním panelu Project (Alt+1). Díky ní se vám rozbalí cesta na straně vždy na soubor, který máte otevřený – ideální na editaci souborů ve stejné složce. Na všechno ostatní je tady Search Everywhere :) Mimochodem to samé jde nastavit i pro Structure (Alt+7), která zobrazuje strukturu momentálně otevřeného souboru (metody a atributy v PHP třídě, strom elementů v HTML souborech).

Shrnutí

  • Search Everywhere
  • Ctrl+Shift+X
  • dají se hledat soubory, třídy, metody i funkce IDE
  • při hledání funguje camelCase a části cesty k souboru oddělené lomítky
  • zapněte si Scroll from source

Práce s textem

Pokud zrovna nic nehledáte, tak pravděpodobně píšete nebo jinak pracujete s textem. Možnosti, jak to dělat efektivně, prozkoumáme v této kapitole. Jen pro jistotu si zopakujeme zkratky, které fungují napříč aplikacemi (ve Windows – na Macu jsou trošku jiné).

Při běžném pohybu kurzorovými šipkami lze využívat funkční klávesy Shift a Ctrl. Se Shiftem vybíráte text. S Ctrl se pohybujete po slovech. Shift+Ctrl vybírá text doprava a doleva po slovech, případně nahoru a dolů po odstavcích. Ctrl funguje také ve spojení s Backspace, kdy smaže celé slovo. Ale pojďme se podívat na něco složitějšího.

Věc, kterou vídám asi nejčastěji, je přesouvání řádků. Vývojáři často používají megakombo Home, Shift+End (případně Ctrl+Shift+RightRightRightRight), Ctrl+X, …, Ctrl+V. Přitom IDE má speciální funkci Move Line Up/Down… a já ji prakticky nepoužívám! Proč? Protože existuje ještě lepší funkce, a to Move Statement Up/Down (Alt+Up/Down), která inteligentně přesouvá celé bloky. Dokáže například prohodit dva odstavce v HTML, i když jsou na více řádcích.

move-statement

Mně osobně šetří nejvíc práce vícenásobný kurzor (Alt), Add selection for next occurence (Alt+Y) a Extend/Shrink Selection (Alt+Shift+Up/Down). Díky tomu dokážete podobné věci jako s makry ve Vimu. Vícenásobný kurzor vyvoláte Alt+kliknutí/tahnutí (nebo prostředním tlačítkem). Snadno s ním například doplníte prefix nebo chybějící čárky v poli.

Vícenásobný kurzor je ovšem nepraktický, pokud máte spoustu řádků, které nejsou zarovnané pod sebou a museli byste klikat kurzory po jednom a trefovat se na správné místo. K tomu lze využít Add selection for next occurence – stačí najít nějaký společný prefix, ten si vybrat a pak udělat úpravu, jako byste pracovali s jedním kurzorem.

Síla tohoto přístupu se ale plně projeví, až když dokážete správně použít Extend/Shrink Selection. Typickým příkladem je třeba refaktoring pole na funkce, které vyhodí výjimku, pokud položka neexistuje. Na to by sice šlo použít Replace, ale než ho vymyslíte, tak je lepší to napsat ručně.

Následující ukázka tento přístup dobře ilustruje. Najdu společný prefix 'name'[mezera] (mezerou jsem odfiltroval 'name',) a použiju Add selection for next occurence (Alt+Y), abych vybral další místa, kde se to objevuje. Pak End, několikrát Left a jsem uvnitř stringu. Pomocí 2x Extend Selection (Alt+Shift+Up) vyberu celé stringy, zkopíruji do schránky a pak vložím do výpisu dole. Pak pomocí vícenásobného kurzoru vložím na konec čárky. Tenhle postup je nejen rychlejší, ale i bezpečnější, protože se vám nestane, že byste některou z položek při scrollování nahoru a dolů zapomněli zkopírovat nebo napsali typo, pokud píšete ručně.

next-occurence

Extend/Shrink Selection se dá také s úspěchem použít na kopírování větších bloků, kde ušetří spoustu přesného trefování myší. Tenhle článek píšu v PHPStormu. A i když jsem s TrackPointem na Lenovu už docela sžitý, tak vybírat text v drncající tramvaji není úplně pohodlné. Takže když chci např. zkopírovat tučný název featury z předchozího odstavce, tak kliknu kamkoli mezi <strong></strong> (což je docela velký cíl pro kliknutí) a pak 3x Extend Selection – nejdřív vybere slovo, pak string mezi tagy a nakonec celý tag.

Nejlepší na celé té věci je to, že pokud PHPStorm rozumí kódu, ve kterém se pohybujete (PHP, HTML, SQL, atp), tak rozšiřuje výběr inteligentně na základě konkrétního jazyka (klíč pole → proměnná pole → blok v podmínce → celá podmínka → metoda → třída a zpět).

Shrnutí

  • Move Statement Up/Down (Alt+Up/Down)
  • vícenásobný kurzor (Alt), Add selection for next occurence (Alt+Y)
  • Extend/Shrink Selection (Alt+Shift+Up/Down)
  • zkuste text vybírat pomocí klávesnice

Závěr

V tomto poměrně obecném dílu jsme se podívali na běžnou práci s textem, přesouvání bloků a vybírání a přesouvání textu bez pomoci myši. V příštím díle si ukážeme, jak v PHPStormu využít toho, že chápe kontext jazyka, ve kterém momentálně píšeme.

Komentáře

Subscribe
Upozornit na
guest
30 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Pavel Spálený

Koukám, dobrý násgtroj (na první pohled).

Nakonec jsem skončil u Visual Studia a php „pluginu“ (https://visualstudiogallery.msdn.microsoft.com/6eb51f05-ef01-4513-ac83-4c5f50c95fb5). A jsem moc spokojený. A stejně jako autor si už nedokážu představit, že bych psal v pspadu.

error414

srovnavat phpstorm s eclipse PDT chce opravdu hodne odvahy.

andrej

kedze nepouzivam ani jeden, v ktorom smere?

pouzivam Sublime alebo Netbeans len pre PHP,

ale keby chce clovek nieco viac, je podla teba jednoznacne vlepsi PHPStorm ci Eclipse PHP Development Tools? :)

Jiří Forst

To těch dílů bude asi hodně než napíšete všechny užitečný funkce PHPStormu :)

David Krupička

Na toto téma byla zrovna PoSobota, doporučuji shlédnou záznam jestli bude na YT. Díky za článek, je to hodně užitečné a doufám, že bude pokračování.

JanTvrdik

Na YT je starší verze (https://www.youtube.com/watch?v=VUTPgNhLcbY). Letošní verze té přednášky ještě online není.

Tomáš Votruba

PHPStorm je super. Taky jsem k němu dlouho hledal cestu, ale ten skok pak stál za to :)

Narazils na Be Awesome in PHPStorm sérii od Jeffrey Waye?
Jestli jo, používáš nějaké tipy?

Miroslav Hančík

Jsem zvědavý na další díly. PHPStorm jsem již několikrát chtěl vyzkoušet, doufal jsem že třeba i tento článek mě navnadí. Bohužel popisované featury jsou v Sublime Textu, a řekl bych že i lépe nabindované by default (2x Shift? rly?!).
Zatím zůstávám u ST, ale za článek díky :)

kozzi11

Velmi se omlouvam za kriticky komentar, ale bohuzel si nemohu pomoct. Kdyz jsem zahledl clanek s nadpisem ohledne PhpStormu (Ano je to PhpStorm ne PHPStorm). Tak jsem mel radost. Sam vyvijim v PHP jiz pres 6 let. A PhpStorm je mi vybornim pomocnikem jiz od roku 2012.

Opravdu se jedna o vytecne IDE pro PHP. Dokonce si dovolim tvrdit ze diky nemu se da o PHP prohlasit ze je to programovaci jazyk. A i z toho duvodu jsem od tohoto clanku cekal mnohem vice.

To ceho jsem se bohuzel dockal je velmi smutne. Ocenuji snahu o seznameni ctenare s timto vybornym IDE (coz jsou pro mne vsechny produkty od JetBrains mimochodem firma je zapsana v Cesku, ackoliv je ocividne spise ruska). Ale bohuzel zpusob jakym je clanek napsany je nestastny. Sam o sobe neni spatny (pokud prominem urcite drobnosti). Ale jako hlavni problem zhledavam zpusob jakym je produkt prezentovan. Jelikoz se jedna o prvni dil, tudiz predpokladam dalsi dily. Ocekaval bych snahu zaujmout.

Bohuzel pokud si tento clanek precte kdokoliv, kdo nezna toto IDE, tak dojde k zaveru ze se jedna o dalsi textovy editor ktery umoznuje multi kursor a vyhledavani everywhere. Coz moc nezaujme a editoru a IDE co neco podobneho zvladaji je cela rada. Mnohem lepsi by bylo prvni dil vzit vice ze siroka a obecneji. V podstate vyjmenovat hlavni duvody proc by se mel clovek s timto IDE „zahazovat“.

P.S. Pokud nekdo ma zajem o 20% slevu na vsechny produkty tykajici se c++ (resharper, clion, appcode) tak dejte vedet, klidne vam poslu slevovy kod zadarmo (je i na mem twitteru kozzi11, takze je mozne ze ho nekdo jiz pouzil). A pak mam jeste kompletni voutcher na vsechny produkty od jetbrains „All Products Pack“, ten teda zdarma asi nedam, pokud mi nenapisete zajimavy produkt kterej me zaujme :). Ale i tak ho planuji nekomu predat za velmi nizkou castku.

Martin Hassman

Jenže on tohle není (a neměl být) marketingový článek tlačící někoho do PHPStormu. Jedná se o seriózní text představující zkušenosti dlouhodobého uživatele PHPStormu. Spletl jste si žánr a hledáte v něm něco jiného.

kozzi11

Jo to je samozrejmne mozne. To je to co pisu, ze jsem to takto bral. Pokud je to opravdu zamysleno jako clanek pro lidi jiz pouzivajici PhpStorm, tak pak je to vicemene OK.

kozzi11

Jinak pokud je seriozni tak by bylo fajn uvadet nazev produktu spravne :). Je to PhpStorm a ne PHPStorm

Tomáš Votruba

Ahoj kozzi11, každému vyhovuje něco jiného a chápu, že to na tebe mohlo působit tak, jak popisuješ.

Ocekaval bych snahu zaujmout.

Osobně mě zajímá, které 3 informace by tebe přesvědčili, abys PhpStorm poprvé vyzkoušel?
Za předpokladu, že o něm slyšíš prvně, a kromě již zmíněné slevy.

Díky.

Martin Zeman

Díky za super článek. :-)
Všechno používám a i haldu dalších.
Zároveň i nějaké užitečné pluginy. :-)

Je fakt, že některé zkratky nejsou úplně nejlépe namapované, ale stačí chvilka ladění a za chvilku je to jako hodinky. :-)

Jo a 2 x Shift mi celkem sedl :-D

Srigi

Bol som prekvapeny tym, ze PhpStorm ma dve urovne nastaveni – default a per-project. Dakujem, ze to autor takto spomenul.
Mam dost nastaveni v jednom z hlavnych projektov, ktore mi teraz chybaju v ostatnych projs. (napr. custom „allowed words“). Mate niekto tip ako ich preniest do default project? Ja som to bohuzial nedokazal najst.

Dobra praca s clankom Tomas.

David Krupička

Někde jsem narazil na plugin, který po kliknutí myši nabízí zkratku kterou jsem mohl použít místo toho, abych používal myš. Nevíte jak se jmenuje?

FredFlinstone

Vedel by mi niekto pomôcť ako použiť už rozpracovaný projekt webovej aplikácie (písanej vo frameworku Laravel), ktorý som doteraz písal v obyčajnom texťáku, ako tento projekt otvoriť pomocou PhpStorm, ako nastaviť potrebné cesty a ostatné nastavenia (v projekte sa používa tiež lokálna MySQL databáza), a hlavne ako možno debugovať kód v tejto aplikácii?

David Grudl

Díky za článek!

Čím to může být, že mám některé klávesové zkratky jiné, než jak jsou uvedeny v článku? Například Move Statement Up/Down mám Ctrl+Shift+Up/Down namísto Alt+Up/Down, Extend Selection mám Ctrl+W namísto Alt+Shift+Up atd. Přemapované bych to mít neměl.

FredFlinstone

V PhpStrom som si vytvoril nový (Laravel) projekt, základnú kostru. Všetko je OK, viem tento projekt spustiť cez [Run], zobrazuje sa hlavná stránka projektu („welcome.blade.php“ volaná cez default-ne definovaný route).

Problém je ale, ak vytvorím ďalšiu stránku/view doplním route, ktorý tento view vyvoláva a spustím opäť aplikáciu – je spustená, hlavná stránka je zobrazená OK (localhost:63342/004/public/index.php), ale po zmene URL (localhost:63342/004/public/test02) sa namiesto tohto view zobrazí error 404 (not found).

Ak ale spustím túto PHP aplikáciu priamo v prehliadači (nie spustením cez {Run] z PhpStorm) funguje aj zobrazenie tohto view (localhost/004/public/index.php).

Takže predpokladám, že chyba nie je „niekde“ v PP kóde (alebo routoch) ale v nejakom nastavení PhpStorm, alebo v niečom súvisiacom s PhpStorm-om.

Vie mi prosím niekto pomôcť?

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.