1. díl - Úvod do knihoven a frameworků v PHP

PHP Knihovny Úvod do knihoven a frameworků v PHP American English version English version

Vítejte v prvním dílu seriálu tutoriálů o tvorbě knihoven pro PHP. Během seriálu zde krok za krokem vytvoříme několik velmi užitečných knihoven pro nejrůznější účely (např. pro datum a čas, práci s obrázky, stringy nebo formuláři).

Pro koho je seriál určen

Tento seriál bude trochu jiný, než ty dosavadní o PHP zde na devbooku. Posune vás o pořádný kus dopředu, ale bude již psán v pokročilejším stylu.

Seriál samozřejmě vyžaduje znalosti OOP a také alespoň elementární základy angličtiny, pardon, ale bez ní se prostě neobejdete a již nejsme u Hello Objects, abychom psali vše česky.

Proč používat knihovny

V PHP se bez kvalitních knihoven u vážnějších projektů neobejdete. Jsou k tomu hned dva důvody.

  1. Ačkoli je PHP velmi vysoký jazyk a obsahuje spoustu užitečných funkcí, časem začnete narážet na mezery v jeho standardních knihovnách. Mnoho důležitých funkcí v něm totiž chybí nebo se s nimi velice špatně pracuje. Poté, co zjistíte, že jste si v každém projektu znovu a znovu programovali obsluhu formulářů nebo převod českého data na databázové, nutně vás napadne si pro tyto základní činnosti vytvořit jednoduché knihovny.
  2. Z praktických zkušeností vám mohu s klidem říci, že pokud programujete v čistém PHP, tak je asi 50% vašeho kódu nepotřebný balast. S použitím kvalitních knihoven napíšete aplikace za polovinu času a s polovičním počtem řádků. Aplikace bude snadno udržovatelná a její tvorba vás bude bavit. Nebudete stále vynalézat kolo a řešit ty samé rutinní záležitosti (jako např. jak ověřit zda je uživatel administrátor), budete se naopak věnovat vymýšlení zajímavých funkcí té dané aplikace a o tom programování přeci je.

Knihovna vs. Framework

S knihovnami je také úzce spojené slovo Framework. Framework je jednoduše řečeno soubor mnoha knihoven, které jsou uzpůsobeny tak, aby k sobě pasovaly a tvořily jeden funkční celek. Obvykle všechny pocházejí od jednoho autora nebo jedné skupiny autorů.

Výhody frameworku

Dostanete funkční celek, který můžete jednoduše používat. Všechny rutinní věci jako např. přihlašování uživatelů nebo již zmíněná obsluha formulářů budete mít připravené, stačí z nich složit aplikaci jako ze stavebnice a přidat vlastní logiku. To zní skvěle, že?

Kdy použít framework

Odpověď na otázku, zda máte používat framework, zní: "Určitě, ale až budete umět opravdu dobře programovat". Frameworky jsou pokročilé aplikace a ať již si je budete psát sami nebo budete používat nějaký hotový, musíte umět dobře programovat a to i když vám autor frameworku slibuje, že zrovna ten jeho můžete používat prakticky bez znalostí.

Vývoj vlastního frameworku

Vytvořit si svůj framework nedá zas tolik práce, jak by se mohlo zdát. Stačí chápat MVC architekturu a napsat si pár knihoven. Člověk se tím mimo jiné i dost naučí, přesně to tu budeme my dělat. Vytvoříme pár nejdůležitějších knihoven pro běžné situace a spolu se seriálem o MVC architektuře dosáhneme programátorské nirvány v podobě nástroje, který budete s radostí denně používat a který vám ušetří spoustu času.

Další možností je sáhnout po nějakém hotovém frameworku, pro PHP je jich hned několik. Pokud tak učiníte, dostanete ihned často vysoce kvalitní funkcionalitu úplně bez práce a zadarmo. Měli byste počítat i s nevýhodami těchto řešení.

Nevýhody hotového frameworku

  • Negarantovaný vývoj - Musíte si uvědomit, že daný framework není standardní součástí PHP, ale je to kód třetí strany. Nikdo vám nezaručuje, že je správně, že se bude dále vyvíjet i pro nové verze PHP a že se nebude jeho rozhraní často měnit. Pokud zvolíte špatně a postavíte svou aplikaci na frameworku, který je nekvalitní, můžete ji potom rovnou zahodit a napsat znovu. To samé se stane i třeba u kvalitního frameworku, jehož autor se ho rozhodne přestat vyvíjet (to se stalo např. s českým PhpRS, všichni se modlíme, aby se to nestalo s Nette).
  • Změny rozhraní - Každý framework má nějaké své určité rozhraní. To se musíte dobře naučit, abyste ho mohli používat. S vývojem frameworku se rozhraní mění.
  • Naivní pocit bezpečí - S nesprávně použitým frameworkem můžete naprogramovat stejně zranitelnou aplikaci jako bez něj, je to stále jen PHP.

Aby to bylo fér, zmiňme si i nevýhody vlastního frameworku.

Nevýhody vlastního frameworku

  • Špatný návrh - Pokud se na frameworku učíte, je velmi pravděpodobné, že něco špatně navrhnete. A když na této chybě potom postavíte větší aplikaci, opravuje se to špatně.
  • Bezpečnost - Musíte se sami zajímat alespoň o základní otázky bezpečnosti a poznat v jazyce PHP funkce, které byste asi jinak nepoužili. Tento bod vidím i jako výhodu, zkušenosti jsou to k nezaplacení, ale ne každý na to má čas a vytrvalost.
  • Velké množství práce - Ačkoli v budoucnu vám vlastní framework práci ušetří, ze začátku musíte napsat poměrně velké množství kódu, které může zpomalit start nového projektu.

Konečné řešení

Každý dobrý programátor by si měl zkusit napsat alespoň jednoduchý MVC framework a několik knihoven, aby pochopil základní myšlenky a principy. Z hotového celku princip totiž špatně vykoukáte a používat něco jako blackbox (že nevíte, jak to uvnitř funguje) se nevyplácí. A to jak z hlediska výkonu, tak z hlediska bezpečnosti, návrhu a určitě bychom toho vymysleli ještě spoustu... Potom již záleží jen na vás, jestli budete své jednoduché řešení vylepšovat nebo nabyté znalosti použijete k osvojení nějakého geniálního frameworku, který již někdo třeba několik let vyvíjí, mezi ty dobré patří třeba Nette nebo Symfony.

Ať již budete stavět na svém nebo hotovém frameworku, vaše rozhodnutí bude mít vždy určité výhody a určité nevýhody. Ani jedna volba není úplně špatně nebo úplně správně.

Pro lidi, kteří sekají weby jako Baťa cvičky, je cizí framework ideálním řešením. Pro ty, kteří spravují delší dobu nějaký svůj projekt nebo několik projektů může být výhodnější vlastní řešení, nikdo vám nebude měnit rozhraní a nebude vás ohrožovat budoucnost vývoje frameworku a podobně, což je u velkého projektu důležité.

To by bylo k úvodu do problematiky vše, již tedy víte co vás tu čeká a proč se do toho pouštíme. Příště si vytvoříme svou první knihovnu v PHP, půjde o jednoduchou, ale překvapivě šikovnou Utility třídu pro práci s českým datem a časem.


 

  Aktivity (2)

Článek pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.

Jak se ti líbí článek?
Celkem (18 hlasů) :
4.944454.944454.944454.944454.94445


 


Miniatura
Všechny články v sekci
Knihovny pro PHP

 

 

Komentáře

Avatar
Martin Konečný (pavelco1998):

Hezký článek. :-) Jsem zvědavý na tvoření knihovny.

 
Odpovědět  +9 22.2.2014 14:20
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.