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.
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. ;)
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:

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.

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 ..

@Andrej Guráň to ti ja neporadím :) skús ale prosím fórum aby sa tu nemiešali témy, dík

Dosť by ma zaujímalo aj porovnanie s nePHP frameworkmi rails, django...
Má niekto skúsenosti?

@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é."

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.
Novinky
2 rokmi
Aprílové vtípky: Výběr toho nejlepšího kolem počítačů, internetu a techniky
Výběr nejlepších aprílových vtípků 2019
2 rokmi
Fotky Google sa učia lepšie pracovať s dokumentmi
Spoločnosť Google prostredníctvom svojho účtu na sociálnej sieti Twitter oficiálne predstavila novú funkciu svojej aplikácie Fotky Google.
2 rokmi
Gmail dovoľuje naplánovať poslanie emailu neskôr
Spoločnosť Google dnes oznámila pridanie funkčnej novinky do svojej populárnej webmailovej služby Gmail, možnosť naplánovať poslanie emailu na neskôr.
3 rokmi
Používatelia Chrome začali prechádzať na nový rýchlejší Firefox, avizujú dáta Mozilly
Nový lepší a rýchlejší prehliadač Firefox 57 Quantum vyúsťuje zrejme do viac používateľov prechádzajúcich respektíve vracajúcich sa na tento prehliadač z iných prehliadačov, na osobných počítačoch aj smartfónoch.
3 rokmi
Briti dokončili kúpu SK-NIC-u. Nové .sk domény nechávajú za 8.4 eur
Predaj správcu slovenskej domény .sk, SK-NIC, bol dokončený a novým majiteľom po telekomunikačnej skupine Danubiatel, do ktorej patrí napríklad Swan a 4ka, je britská spoločnosť CentralNic.
Staršie novinky »TOP dlhšie
- 01 Farbičky v HTML a CSS, alebo? (1076x)
- 02 Tiché COMBO Logitech MK295 (953x)
- 03 Kingston uvádza 128GB verziu šifrovaného USB (915x)
- 04 Pochopte, ako vytvoriť virtuálny obchod v 6 krokoch (791x)
- Aj ty môžeš byť najčítanejší. Napíš článok »
TOP tento mesiac
- Aj ty môžeš byť najčítanejší. Napíš článok »
Nové články:
- 14.Kingston uvádza 128GB verziu šifrovaného USB
sep - 10.Tiché COMBO Logitech MK295
sep - 24.Farbičky v HTML a CSS, alebo?
aug - 23.Pochopte, ako vytvoriť virtuálny obchod v 6 krokoch
aug - 29.Kamery, cloud a bezpečnosť
jul - Viac »
- Aj ty môžeš byť najčítanejší. Napíš článok »
Pekné veci
Pekné veci
Pekné veci
Pekné veci
Posledné komentáre
- Pokiaľ používaš nejaký lepší bitmapový editor, napr. Photoshop, a chceš robiť retuše, ed...
- Veľmi dobrý článok a pre začiatočníka úplne odrazový mostík. https://ludwaismania1.blogs...
- Nova international a prima lus majú vysporiadané pravs ale aj CNN prima News
- Tv Joj nijako neobmedzuje šírenie médii, ktoré majú vysporiadané licenčné práva pre Slov...
- Nech televizie vrátia naspäť originál verzie a tie internationali nech zrušia. Každý si ...
Kritika
Vieš ako robiť veci lepšie? Pomôž našim odvážnejším členom a skritizuj im projekty!
Reklama
Slovenská IT komunita
Seriály zo Zajtra.sk
· Ako písať blog
· Ako sa stať PHP ninja s Yii Frameworkom
· Aplikácie pre Facebook
· CSS triky
· iOS vývojára príhody a skúsenosti
· Jednoduché programy, ktoré vám ušetria čas
· Modelovanie webového sídla
· Nauč sa CodeIgniter [HD]
· Nauč sa jQuery [HD]
· Nette PHP framework
· OOP v Javascripte
· Programujeme v Jave
· Programujeme v Lazaruse
· Programujeme v Pythone
· Robíme Eshop v ASP.NET Web Pages
· Slovenskí iOS developeri
· Webdizajn krok po kroku
· Yablkov TurboTip [HD]
...super článok, iba som sa uistil, že mám pokračovať s Yii.