Blog | PHP Style Guide

PHP Style Guide

V PHP můžete potkat řadu štábních kultur. Nejznámější jsou asi štábní kultury Zendu a PEARu. Já experimentuju s trochu odlišnou kulturou, kterou v PHP obvykle nepotkáte. Třeba si z ní něco vezmete. Většinu z toho dodržuju (nebo aspoň porušuju velmi vzácně).

Je rozdělena na více úrovní. Level 1 je naprostý základ, který by měl dodržovat každý (a nebo by neměl vylejzat z domu). Level 2 je pro ty, kteří už mají něco naprogramováno a rozumí tomu, proč a jak co dělají. Level 3 je pól, ke kterému je vhodné směřovat a málokdo ho perfektně dosáhne. Nehledě na to, že sám ho ještě reviduju, zda ho mám nebo nemám brát dogaticky.

Tato kultura není jen shrnutím toho, kde psát závorky nebo jestli používat taby nebo mezery. Je širším pohledem na techniky, které mi fungují.

Level 1

  • exit a die smí být použit pouze v 1 objektu v celé aplikaci, který je pro toto určen. Ostatní objekty mohou tento objekt používat pouze pomocí Dependency Injection
  • třídy, interfejsy používají PascalCase
  • proměnné, metody a funkce používají snake_case nebo camelCase syntax (je nutno jednorázově zvolit a dodržovat)
  • public atributy jsou zakázané
  • jednopísmenné (nebo málopísmenné) proměnné jsou povolené jen v iteraci FORem
  • global cokoliv je zakázané
  • GET, POST, FILE, COOKIE smí být použit pouze při kopírování do nestatických neglobalních objektů
  • kód nesmí potlačovat notices
  • settery (krome potreby Dependency Injection) jsou zakázané
  • require nebo include bez __DIR__ nebo jiné konstanty určující absolutní cestu jsou zakázané
  • tam, kde je to možné, preferujte kompozici nad dědičností nebo traits
  • omezení na řádku je 120 znaků
  • komentáře používejte pouze tehdy, kdy nejde danou věc říct kódem
  • v komentářích pište „proč se to děje“, ne „co se děje“ – správně: „protoze PHP 5.1.6 to rozbiji“, špatne: „priradi 11 do x“
  • na odsazováni použijte taby nebo sudý počet mezer (2,4…) a dodržujte dohodu v celém projektu
  • za závorkou { u class, interface, try, catch, finally vždy odřádkujte
  • název třídy výjimky končí na Exception nebo Error
  • dědičnost výjimek odpovídá typu chyby (dědíme LogicException? RuntimeException?). Pokud chcete přiřadit výjimku k nějakému modulu, použijte namespace
  • není dovoleno vyhazovat přímo instanci Exception. Použijte vlastní výjimku nebo SPL výjimku
  • nepoužívejte trigger_error
  • prevádějte errory na výjimky
  • v každé situaci musíte znát přesný typ každé primitivní proměnné
  • v každé situaci musíte znát přesný interface kazdého objektu
  • v názvech nepoužívejte zkratky, pokud se nejedná o ustálené termíny (je v pořádku Zend\MVC, není povoleno $numRows – správně je $rowsCount nebo $rows_count)
  • pouzívejte správně private a protected (musím tohle vysvětlovat?)
  • vertikální odřádkování v metodě znamená, že má být kód převeden do samostatné metody
  • maximální úroveň zanoření zdrojáku je 3 (1. třída, 2. metoda, 3. kontrolní blok jako je if, while, do). Pokud použijete try{ }, můžete zvýšit úroveň na 4

Level 2

  • static cokoliv je zakázané
  • type hinting je povolen jen interfejsy
  • primitivní proměnné jsou po přiřazení immutable (výjimka je akumulátor, do kterého sbíráte hodnotu, kterou na konci vrátíte)
  • kód, který nemá procházející testy, je nedůvěryhodný. Jednejte s ním tak.

Level 3

  • objekty jsou immutable tam, kde je to možné
  • omezení pro třídu je 150 řádek. 80 % třid vašeho projektu nesmí mít víc, než 75 řádek

Programování

Předejte zkušenosti i dalším a sdílejte tento článek!

Předchozí článek
Následující článek


Jiří Knesl
Business & IT konzultant

Jiří Knesl poprvé začal programovat v roce 1993. Od té doby, díky skvělým učitelům a později zákazníkům, měl možnost neustále růst v oboru vývoje webových aplikací a informačních systémů. v roce 2002 se přidal zájem o ekonomii a v roce 2006 o organizaci práce. Vším tím se konstantně profesně zabývá jak ve svém podnikání, tak i u zákazníků. Za posledních 5 let vydal na tato témata přes 400 článků.

Prohlédněte si moje reference

Mám zkušenosti z rozsáhlých projektů pro korporace, velké podniky, střední i malé firmy, ale i pro startupy v cloudu. Zvyšoval jsem jejich know-how, pomáhal nastavovat jejich organizační strukturu, byl lektorem a mentorem v náročných situacích. Podívejte se, jak vidí můj přínos samotní klienti.

Sledujte mé postřehy na sociálních sítích