Čo je to framework a ako si vybrať ten správny?

Ak chcete naprogramovať svoj prvý vlastný portál, osobnú web stránku, e-shop, domáci kalendár, či generátor receptov, namiesto pracného lopatovania kódu je niekedy vhodné porozhliadnuť sa po predpripravenom riešení. Je to podobné, ako keď máte pozemok, kde chcete realizovať svoj projekt. Nie je nutné, aby ste všetko robili sami vlastnými rukami. K dosiahnutiu vytúženého cieľa v podobe domčeka vám pomôže rodina, priatelia, komunita či hotový projekt od suseda. Nuž a v prípade programovania pridá ruku k dielu framework. 

Nehovoríme pritom o hotovom riešení, ale o kostre či hrubej stavbe, ktorú si sami následne upravíte podľa svojich predstáv. Použitie frameworku znamená, že si uľahčíte vývoj a viete sa zamerať na konkrétne kľúčové funkcionality vášho projektu. Ak ste začiatočník, pomôže vám to aj pri učení, pretože frameworky majú spravidla bohatú dokumentáciu a množstvo praktických príkladov, keďže ich udržiavajú veľké komunity programátorov.

Výber správneho frameworku

Ak máte vodičský preukaz, tak ste s istotou od rodiny či kamarátov počuli, že Volvo je najbezpečnejšie, Ferrari najrýchlejšie, Audi najkrajšie, Fiat Multipla najškaredšia a podobne. To isté platí aj pri výbere frameworku. Niektorý je rýchly, iný má krajšiu syntax a ďalší v prípade stretu s hackerom vydrží viac a vaša aplikácia tak ostane stabilnejšia.

Ja odporúčam, v prípade, že takú možnosť máte, otestovať čo najviac vozidiel, a teda vyskúšať si čo najviac frameworkov. Netreba pritom najazdiť kilometre, postačí si sadnúť, rozhliadnuť sa po interiéri a exteriéri a možno si prečítať nejaké tie recenzie či pozrieť test na garaz.tv.

Ktorý je ten naj?

Prvým spôsobom výberu naj frameworku môže byť popularita. Už dlhé roky si zlato, striebro a bronz udržujú nesmrteľné frameworky Laravel, Symfony a CodeIgniter. Každý má za sebou veľkú komunitu, skvelú dokumentáciu a tisícky aktívnych používateľov. Ak by ste chceli zaexperimentovať, prezradím vám aj mená ďalších adeptov – CakePHP, Yii, Laminas Project, Phalcon, Fat-Free Framework (F3), Lumen, Slim, Flight, PHPixie či Nette. Tieto sú menšie a treba ich použitie voliť s rozumom. Ale o tom až neskôr…

Teraz sa dostávam k druhému spôsobu výberu. Pomôžem si citátom od programátora z diskusného fóra: “Use the right thing on the right part of your business.” Tak, ako je dôležitá voľba samotného jazyka, teda napríklad PHP, Node.js, Java alebo .Net, rovnako dôležitý je aj výber architektúry (konkrétne typu návrhového vzoru), frameworku či dokonca rozhodnutie použiť len určité komponenty z rôznych frameworkov. 

Odporúčam sústrediť sa na 3 kritériá:

  1. Nevymýšľajte teplú vodu a snažte sa vybrať komponenty/frameworky, ktoré vám pomôžu znížiť množstvo pôvodného kódu, čo potrebujete od začiatku napísať. 
  2. Zbytočne neexperimentujte, radšej uprednostnite štandardizovaný proces vývoja a dodržiavajte osvedčené postupy. Nadarmo vám bude super-špica framework, ak nespolupracuje so zvyškom projektu.
  3. Sústreďte sa na bezpečnosť, udržateľnosť a umožnenie tímového vývoja. V skratke, ak budete framework poznať len vy a človek, čo ho vymyslel, pravdepodobne sa po niekoľkých mesiacoch či rokoch vývoja dostanete do slepej uličky. Lepšie sú populárnejšie riešenia, ktoré pomáha vylepšovať a posúvať ďalej komunita programátorov.

A ešte tip – nezabudnite, že je nutné neustále sledovať verzie. Tak, ako sa vyvíja PHP-čko ako také, tak sa musí prispôsobovať aj každý framework. Kedysi sme používali PHP 4, 5, 7, teraz tu máme osmičku. Podobne so Slim Framework sme začínali už vo verzií 2.0 a dnes, v čase písania článku, sme už na verzií 4.10. A Zend Framework 1, ktorý spravoval Rogue Wave Software a je s našou spoločnosťou spájaný prakticky od nepamäti, nahrádzame Laminas Project. Ide o priame pokračovanie Zend Frameworku, s novým názvom i novým správcom – Linux Foundation.

Predstavovať v tomto blogu detailne jeden framework za druhým pre vás nebude užitočné. Google vám na prípadné otázky ihneď odpovie v množstve článkov, ktoré sú veľmi pekne rozpísané. Ja som sa namiesto toho rozhodol popísať 3 frameworky, s ktorými mám dobrú skúsenosť a odporúčam vám ich na vašom projekte minimálne vyskúšať.

Slim Framework

Ak chcete pre vašu aplikáciu vytvoriť prehľadné a udržateľne REST API, odporúčam napr. Slim Framework. Za pomoci tohto skvelého frameworku dosiahnete perfektný výsledok ľavou zadnou. Prečo? Ide o najrýchlejší micro RESTful framework. Má veľmi dobrú dokumentáciu a je ľahko pochopiteľný. Navyše ponúka škálovateľnosť a podporuje PSR-7 (sada spoločných rozhraní definovaných PHP Framework Interop Group) aj code hooks. Tiež má užitočné triedy na správu requestov, responses, cookies atď. a pre svoj middleware využíva jednoduchý a priamočiary koncept. To všetko z neho robí skvelý framework využiteľný pre širokú škálu projektov.

Ako jednoducho a rýchlo nainštalovať Slim 4 nájdete na tejto adrese: https://www.slimframework.com/docs/v4/start/installation.html

Príklad: Nadefinovanie REST API pre futbalové tímy a ich hráčov.
Príklad: Jednoduchý home controller s help a statusom.

Laminas

Ak radi používate architektúru MVC, chcete vyvíjať web na mieru a zároveň používať niečo, čo je už otestované na množstve webových projektov, môžete si vybrať Laravel alebo Laminas Project. Tento framework má viac ako 570 miliónov inštalácií, dobrú prispôsobiteľnosť a za sebou veľkú komunitu, čo garantuje skvelú podporu a údržbu. Navyše ponúka rýchle a výkonné big data aplikácie, s ktorými hravo zvládnete aj rozsiahle podnikové aplikácie.

Ako jednoducho a rýchlo nainštalovať Laminas najdete na tejto adrese: https://docs.laminas.dev/laminas-mvc/quick-start/#install-the-laminas-mvc-skeleton-application

Jednoduchý príklad.

Nette

Ak ste úplný začiatočník a chcete podporiť komunitu programátorov v Čechach a na Slovensku, môžete si zvoliť Nette framework (https://nette.org/cs). Ja som na ňom vyrastal a nedalo mi ho preto nespomenúť. Hoci už má svoje roky, ide o moderný framework s podporou HTML5, AJAX a SEO. Má kvalitnú dokumentáciu, šablonovací systém, ladiace nástroje, efektívnu databázovú vrstvu a objektový návrh. Celkovo vás vedie k dobrým návykom, no zároveň vám dáva dostatok voľnosti.

Ako s nim začať nájdete na tejto adrese: https://doc.nette.org/cs/quickstart/getting-started

Z každého rožku trošku

Vybrať najoptimálnejšie riešenie nie je nikdy jednoduché. Často sa to naučíte až rokmi praxe. Dovtedy treba skúšať, testovať, hľadať a porovnávať. Funguje to tak aj u nás – náš tím sa neustále rozrastá a my si od nových kolegov vždy radi vypočujeme názor/obhajobu rôzneho starého či nového typu riešenia.

Aj preto sa u nás stretnete so Slim Framework alebo aj Laminas Project, no vyskúšate si niektoré komponenty zo Symfony a, pokiaľ sa nemýlim, maličko viete pošprtať aj vo Phalcon. No a v budúcnosti, keď sa jeden z vás, čitateľov, stane naším kolegom, je vysoko pravdepodobné, že ako analytik/architekt môžete spolu s tímom realizovať projekt v úplne novom, vami vybranom frameworku.

Máš toto všetko v malíčku? Potom sa pridaj do nášho tímu!