Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Úvod do knihoven a frameworků v PHP

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

V příští lekci, Knihovna DateUtils pro český datum a čas v PHP, 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.


 

Všechny články v sekci
Knihovny pro PHP
Přeskočit článek
(nedoporučujeme)
Knihovna DateUtils pro český datum a čas v PHP
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
52 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity