spájame
slovenskú
IT komunitu
pridaj sa
Registrácia · Login

Peter Payter Gašparík 14.9.2012
Hodnoť článok:
13 0

Ako si vybrať ten najvhodnejší PHP framework?

V minulom článku sme si rozobrali najznámejšie PHP frameworky. Rozobrali sme si klady a zápory každého z frameworkov a zhodnotili ich. Niekomu to ale nemuselo stačiť pri rozhodovaní a tento článok bude práve o tom.

> Minulý článok <

Prečo by som si vôbec mal niektorý vybrať?

Všetko na svete má svoje klady aj zápory (okrem Chucka Norrisa), a preto je dobré si každé rozhodnutie najskôr prehodnotiť. Ak máme rozobrať výhody a nevýhody použitia PHP frameworku (ďalej len FW), bude to vyzerať takto:

Výhody:

  • Používanie už hotových a otestovaných komponentov
  • Väčšinou OOP programovanie
  • MVC pattern
  • Dokumentácia s príkladmi
  • Okomentovaný a prehľadný kód
  • Ochotná komunita
  • Núti k správnym návykom a konzistentnosti

Nevýhody:

  • Donútiť sa naučiť niečo nové
  • Pomalšie aplikácie
  • Niekedy odkázanosť na pomoc niekoho iného

Vo všeobecnosti použitie FW nám pri obetovaní rýchlosti ponúkne istú mieru komfortu. Vďaka predprogramovaným komponentom sa môžeme sústrediť viac na kreatívnu časť práce ako na "vymýšľanie kolesa". Sledovanie každej milisekundy pri tvorbe aplikácií nie je len zbytočné, ale je to aj zlý návyk. Hardvér je stále lacnejší a výkonnejší, preto používať OOP v PHP skutočne už prestáva byť problémom. Je potrebné si viac vážiť náš ľudský čas, a čo si budeme klamať, nikdy ho nie je dosť :)

Ak sa pre budovanie svojej aplikácie rozhodnete použiť FW, rozhodnite sa jednoznačne už na začiatku. Neskoršie implementovanie, resp. "výmena kódu", je veľmi obtiažne. Tiež je dobré si rozmyslieť, či danú aplikáciu nebude lepšie postaviť na nejakom CMS. Ak by to mal byť blog alebo eshop, istotne bude lepšie siahnuť už po niečom hotovom.

Skôr, než prejdeme k samotným kritériám, treba si ujasniť ešte zopár vecí, ako:

  • Som vypracovávateľ projektu (programátor) alebo zadávateľ?
  • Stačí na projekt jeden človek alebo treba viacej ľudí?
  • Budem do budúcna často pridávať nové funkcie?
  • Budem neskôr vyžadovať zmenu aj v štruktúre súborov?

Ak toto máme ujasnené, môžeme prejsť ku konkrétnym bodom:

Komunita a rozšírenosť

Ak ste zadávateľ projektu, tak toto bude dôležitý bod. Čím je FW rozšírenejší, tým ľahšie je nájsť programátora a cena ide tiež dolu. Ak ste vypracovávateľ (teda programátor), je to relatívnejšie. Základný ekonomický princíp hovorí, že ak je dopyt väčší ako ponuka, je aj cena vyššia. Ak sa naučíte niečo, čo vie málo ľudí, môže vám to pomôcť stať sa expertom vo svojom obore. Samozrejme, nevýhoda je v tom, že riešenie problémov môže byť obtiažnejšie. Za najrozšírenejší FW pre rok 2011 je považovaný podľa tohto prieskumu Zend Framework 1. V tejto štatistike samozrejme chýba Nette, ktorý je u nás a hlavne v Čechách stále populárnejší.

Robustnosť a komponenty

Všeobecne platí - čím viac komponentov, tým je FW hodnotnejší. Ide nám predsa o uľahčenie si práce, preto tento bod je jeden z kľúčových. Komponenty môžete hľadať buď v základnom balíku od tvorcov FW alebo aj od komunity. Môže byť rozdiel v kvalite a väčšinou sú oficiálne komponenty dôkladnejšie otestované. Tiež je výhodné, ak tieto komponenty sú hostované na GitHub, kde je možnosť participovať na vývoji, alebo tiež možnosť získať jednoducho aj ostatné komponenty, na ktoré je daný komponent previazaný. Medzi robustnejšie FW patrí Zend Framework, Symfony 2 alebo Yii. Medzi menšie CodeIgniter alebo Kohana.

Flexibilita

Vami vybraný FW nemá komponent, aký požadujete? Mali by ste si teda zistiť, ako jednoducho sa doň integrujú komponenty z 3. strán. Ak plánujete aplikáciu rozvýjať postupne do budúcna o funkcionalitu, je potrebné, aby bol FW na toto pripravený a aj na prípadné zmeny v štruktúre súborov, ktoré môžu nastať. Medzi flexibilné FW patrí Zend Framework alebo CodeIgniter.

Rýchlosť a výkon

Tento bod súvisí s robustnosťou. Všeobecne platí, že čím robustnejší FW, tým je pomalší. Nedá sa objektívne odmerať, ktorý FW je o koľko rýchlejší. Všetko záleží od konkrétnej aplikácie, od správneho programovania v rámci daného FW a od využívania cache daného FW. Medzi relatívne svižnejšie kúsky patrí CodeIgniter, Kohana alebo aj taký Nette a Yii, aj keď sú robustnejšie. Treba mať ešte na pamäti, že síce menšie FW sú rýchlejšie, no vo väčších aplikáciách pri použití mnohých komponentov môžu byť pomalšie ako robustnejšie FW, ktoré sú na takéto niečo stavané.

Magickosť

Je to viac dôležitá vlastnosť pri výbere, ak ste vypracovávateľ. Páči sa vám viac, ak máte možnosť svoj FW vyladiť do písmenka presne? Alebo máte radšej nadštandardné funkcie, ktoré vám uľahčia prácu a nemusíte vidieť pod pokrievku? Všetko má svoje výhody a nevýhody. Konkrétne tu, ak sa rozhodnete pre magickosť, zistíte, že sa budete musieť toho naučiť trošku viac, no neskôr sa ten čas investovaný do učenia pár fínt môže vrátiť. Ak sa rozhodnete pre opak, budete si musieť zopár vecí naprogramovať podľa seba, no získate tak väčšiu kontrolu nad kódom, lepšiu flexibilitu a možno ušetríte aj pár milisekúnd. Najlepšie je vyskúšať si oba princípy a vybrať ten, ktorý vám sadne viac. Medzi magické FW patrí napr. CakePHP, Nette alebo Yii. Medzi nemagické napr. Zend Framework alebo CodeIgniter.

Generátor kódu

Generátory kódu sú väčšinou konzolové aplikácie (Yii má pekné webové rozhranie), ktoré môžu dokázať vygenerovať na jeden príkaz controller, tabuľku alebo aj celý CRUD. Tiež sa dá stretnúť aj s pojmom scaffolding. Ak má FW generátor kódu, tak je to len plus a šetrí to čas. Dobrý generátor kódu majú napr. Symfony 2, Yii, CakePHP.

Databázové vrstvy a ORM

Každý FW v minulom článku, ak nemal ORM, tak mal aspoň abstrakčnú vrstvu pre jednoduchšiu prácu s databázou v základnom balíku. Aj tu platí, že čím jednoduchší nástroj, tým je rýchlejší, no ponúka menej komfortu. Napr. taký NotORM, na ktorom zakladá databázová vrstva v Nette, je význačný svojou jednoduchosťou a rýchlosťou. To sa snaží dokázať Jakub Vrána (tvorca) vo svojom porovnaní voči Doctrine 2, ktoré je štandardne v Symfony 2. Toto porovnanie je však veľmi jednostranné a nepovie skutočnú výhodu Doctrine 2, ktorá je hlavne v 5-vrstvovej architektúre. Tento prístup je už roky známy z vyšších programovacích jazykov, no do PHP preniká až teraz a hlavnou motiváciou je mať konzistentnú reprezentáciu dát naprieč celou aplikáciou. Je na vás, čo si vyberiete, ale určite sa oplatí vyskúšať si na vlastnej koži, čo viac sadne. Výhoda je, že ak vám aj ORM daného FW nesadne, väčšina z nich má možnosť ľahkej integrácie z 3. strán.

Šablónovací nástroj

Mať v danom FW šablónovací nástroj nemusí byť nutne ani dobré, ani zlé. Zlé jazyky hovoria, že už samotné PHP je šablónovací nástroj. Ak ste tohto názoru, zrejme vám bude pripadať zbytočné učiť sa niečo nové. Ak nejde o veľkú aplikáciu, tak žiaden problém, zaobídete sa aj bez neho. Použiť ale nejaký šablónovací nástroj ako Latte v Nette alebo TWIG v Symfony 2 má svoje výhody. Týmto spôsobom ešte lepšie oddelíte aplikačnú vrstvu od prezentačnej, získate rozšírenú syntax zápisu, napr. cyklov alebo podmienok. Dokonca si môžete uľahčiť zápis ajaxových volaní. O výkon sa nemusíte obávať, pretože šablóny sú na pozadí prekompilované do natívneho PHP kódu a cachované. Väčšina FW, keď aj neponúka žiaden šablónovací nástroj, nemala by byť integrácia u väčšiny z nich problém, ako napr. SMARTY v Zend Framework.

Predchádzajúce skúsenosti

Ste vypracovávateľ a máte už predchádzajúce skúsenosti s nejakým FW? Možno bude lepšie odraziť sa od neho a porovnávať. Treba si zistiť, či sa ním dané požiadavky aplikácie dajú ľahko splniť. Niekedy práca s niečím, čo už je známe, môže byť rýchlejšia ako s niečím novým, aj keď by to možno malo viacej hotových vyžadovaných komponentov. Je to veľmi individuálne. Ak sa dá, skúste si spraviť menší prieskum. Pre zadávateľov projektov je tiež výhodné, ak pridelení ľudia vedia, s čím idú robiť. Prípadne, na základe ich skúseností môže byť výber správneho FW ľahší.

Krivka učenia

Ak nemáte skúsenosti so žiadnym FW, bude tento bod dôležitý. Tiež treba prehodnotiť OOP znalosti v PHP. Ak sú znalosti slabé, je rozumnejšie začať s ľahšími FW, ako CodeIgniter alebo Nette. Ak si trúfate na viac, skúste Zend Framework alebo Symfony 2.

Na záver...

V globále treba aj prehodnotiť, koľko času máme k dispozícii pre výber pre nás vhodného FW. Ak je ho mnoho, určite ich vyskúšajte na sebe čo najviac. Skúste si spraviť nejakú jednoduchú aplikáciu s formulárom pre pridávanie a editáciu produktov. To je zrejme najlepší spôsob, ako si overiť, čo vám pasuje a čo nie.

Ešte posledná myšlienka - treba si uvedomiť, že aj zle naprogramovaná aplikácia v správne vybratom FW môže byť pomalšia ako dobre naprogramovaná aplikácia v nespávne vybratom FW. Preto berte FW ako pomocníka, ako nástroj. Nehľadiac na konečný výber FW, aj tak bude aplikácia naprogramovaná iba tak dobre, aký dobrý programátor ju programoval. ;)

Peter Payter Gašparík Peter Payter Gašparík

Som freelancer na plný uväzok ;)


Hodnoť článok:
13 0

7 komentárov k článku:

Komentovať môžu iba prihlásení

Zaregistruj sa cez bezplatnú registráciu alebo použi login cez Facebook (FB Connect)

Prihlás sa tu, ak už máš profil na Zajtra.sk:


Zabudol som heslo

0 0 Peter Pedro Bohuš 26.8.2014 01:21:28
...super článok, iba som sa uistil, že mám pokračovať s Yii.
0 0 Vladimír Štofaník 10.9.2013 12:07:16
No ja som zahniezdil vo FatFree fw. Ultra Rýchly, OOP, CRUD, ORM orientovaný. Nieto čo vytknúť. Inštalácia a prvé spustenie do niekoľkých sekúnd. Perfektná dokumentácia. Len odporúčam.
0 0 tester 18.9.2012 09:50:18
fajn spracovane. moj prvy bod pri vybere FW bol charakter riesenie / projekt / zadanie ktore riesim a co ocakavam od riesenia. niekedy totiz moze byt FW na obtiaz, podla mojich info od devov, je niekedy jednoduchsie spravit nieco od zaciatku ako nieco prerabat. zvysok mi sedi ;) good job ..
1 0 Peter Payter Gašparík 14.9.2012 14:29:45
@Andrej Guráň to ti ja neporadím :) skús ale prosím fórum aby sa tu nemiešali témy, dík
0 0 Andrej Guráň 14.9.2012 14:21:03
Dosť by ma zaujímalo aj porovnanie s nePHP frameworkmi rails, django...
Má niekto skúsenosti?
1 0 Peter Payter Gašparík 14.9.2012 13:56:27
@Tomáš Nikl súhlasím, ale veď v odseku "Rýchlosť a výkon" o tomto v podstate píšem - "Treba mať ešte na pamäti, že síce menšie FW sú rýchlejšie, no vo väčších aplikáciách pri použití mnohých komponentov môžu byť pomalšie ako robustnejšie FW, ktoré sú na takéto niečo stavané."
2 0 Tomáš Nikl 14.9.2012 13:28:39
Dovolim si s tebou nesouhlasit ohledne rychlosti aplikaci. Framework je mozna pomalejsi pri jednoduchem Hello world oproti "cistemu" php, ale vem si, ze mas rozsahly portal, kvalitni framework, ktery v sobe ma kvalitni spravu cache a potom ciste PHP, kde jiste cache nebude tak otestovana a vyladena jako u frameworku. Pokud aplikaci programuje nejaky podrpumerny programator, tak za nej framework vyresi plno veci, ktere by si sam treba nebyl schopen naprogramovat (a nebo dost mizerne, coz se podepise na rychlosti aplikace). Vetsinou tedy byvaji aplikace na modernich FW rychle, jilikoz neimplementuji jen jednoduchy system na cachovani obsahu.
Zajtra.sk > Programovanie > PHP > Ako si vybrať ten najvhodnejší PHP framework?


Kritika

Vieš ako robiť veci lepšie? Pomôž našim odvážnejším členom a skritizuj im projekty!

Reklama

Seriály zo Zajtra.sk

Reklama