NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Lekce 1 - Úvod do Symfony frameworku pro PHP

Vítejte u první lekce online kurzu o tvorbě webových aplikací v PHP frameworku Symfony. Symfony je kompletní framework pro PHP, tvořený sadou PHP komponent, která výrazně zjednodušuje tvorbu webových aplikací. Framework je kvalitně objektově navržený a světově je velmi rozšířený. Fungují na něm velké i malé projekty, můžete se podívat na jejich seznam a také stojí za zmínku, že některé jeho komponenty využívají i další nástroje, např. Doctrine, Composer, Codeception nebo dokonce redakční systémy jako Drupal, Joomla nebo PrestaShop. Když ho budete umět, tak dobrou práci vždy najdete.

V dnešním tutoriálu si vysvětlíme proč bychom obecně měli používat PHP frameworky a řekneme si, jak Symfony funguje.

Tento kurz je psaný pro Symfony verzi 5.x.

Pozor, dodržuj přesné verze komponent! Pokročilé projekty jako tento jsou složené z komponent. Možná by tě napadlo použít nejnovější verzi nějaké komponenty, co zrovna včera vyšla. Projekt ti pak ale bez odborné úpravy pravděpodobně nebude fungovat! U verzí komponent neplatí jako např. u aktualizace Windows, že chceme každý den používat tu nejnovější. Neustálé aktualizace všeho by totiž vyžadovaly každodenní a komplexní změny kódu projektu a reálně se tak neprovádějí. Ze stejného důvodu i my aktualizujeme kurzy v pravidelných intervalech a nové verze k sobě pak sladíme tak, aby vše fungovalo.

Proč používat framework

Framework je ucelený soubor do sebe pasujících knihoven. V PHP se bez kvalitních knihoven u vážnějších projektů neobejdete. Jsou k tomu hned dva důvody.

  • 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 databázovou třídu, obsluhu formulářů nebo stránkování tabulky, nutně vás napadne si pro tyto základní činnosti vytvořit jednoduché komponenty.
  • 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 komponent napíšete aplikaci 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.

Framework si můžete vytvořit buď vlastní nebo použít nějaký hotový, kterým je právě Symfony.

Co potřebujete k tomu, abyste mohli Symfony používat

Jak již bylo řečeno v úvodu, Symfony je hlavně veliká sada znovupoužitelných komponent, na níž je postavený framework pro tvorbu webový aplikací. Když programujete v Symfony, programujete stále v PHP a navíc využíváte těchto komponent, které jsou objektově navržené a staví na principech MVC architektury. Proto pro použití Symfony musíte mít s PHP pokročilé zkušenosti, znát dobře objektově orientované programování a také alespoň základy MVC architektury. Učit se Symfony bez těchto znalostí je zbytečný výdej energie, protože neporozumíte jeho principům a jen ztratíte svůj čas. Pokud neznáte OOP nebo MVC, přečtěte si prosím nejprve tyto dva místní kurzy.

Jak Symfony funguje

V jednoduchosti si popišme základní technologie a termíny, které se v seriálu budou dále objevovat.

MVC

Jak již bylo řečeno, Symfony je klasický MVC framework, takže je asi dobré si zopakovat, co to vlastně znamená.

Aplikace stojí na částech třech typů, které se v aplikaci dělí o 3 základní úlohy:

  • řízení,
  • logiku,
  • výstup.

Jen takto rozdělená aplikace je totiž přehledná a snadno rozšiřitelná.

  • Kontrolery (Controllers), řízení - Kontroler je část, se kterou komunikuje uživatel. Předá jí parametry a ona mu vrátí HTML stránku. Kontroler typicky parametry předá modelům, od kterých získá data. Tato data předá pohledům (šablonám), které data začlení do nějakého HTML kódu. Tento HTML kód pošle kontroler uživateli do prohlížeče. Funguje tedy jako takový prostředník.
  • Modely (Models), logika - Obsahují logiku aplikace, jako např. práci s databází nebo výpočty. Každá datová entita má většinou svůj model (uživatel, článek, komentář,...).
  • Pohledy (Views), výstup - Obsahují Twig šablony s HTML kódem. Twig je šablonovací systém, který do HTML šablon umožňuje vkládat data z PHP pomocí speciálních značek.

Routování

Než se uživatel dostane ke kontroleru, narazí na tzv. routování (česky směrování). Úkolem této vrstvy je podle URL adresy poznat co uživatel chce a zavolat mu příslušný kontroler, který jeho dotaz obslouží. V Symfony existuje několik možností, jak zařídit routování tzv. "hezkých" URL, nejčastěji se pak využívají anotace přímo u jednotlivých metod kontrolerů.

Životní cyklus

Při použití frameworku si musíte být jistí tím, co se uvnitř odehrává, jinak se z programátora degradujete na experimentátora, možná kouzelníka a jistě by se dalo vymyslet několik dalších profesí. Popišme si životní cyklus aplikace v Symfony - tedy co se stane, když uživatel zadá do adresního řádku např.:

obchod.cz/book/harry-potter

Životní cyklus stránky je znázorněný následujícím diagramem. Hned si ho i popíšeme.

Životní cyklus aplikace v Symfony - Základy frameworku Symfony pro PHP
  1. Jako první se požadavek dostane k routování. Zde se podle adresy zjistí, že chceme něco s knihami a proto se zavolá BookController a předá se mu zbytek URL.
  2. BookController se podívá do parametrů, co se po něm chce a zjistí, že uživatel chce vypsat knihy s názvem "harry potter". Získá si tedy BookModel, kterému sdělí, že chce tyto knihy. BookController vykonává podle dané URL příslušnou metodu třídy, v tomto případě zobrazení seznamu knih. Stejně tak ale může např. knihu přidat nebo odstranit pomocí jiných v něm obsažených metod.
  3. BookModel dostane v parametru název knih, které získá z databáze a vrátí.
  4. BookController získá data od modelu a tato data předá pohledu (šabloně).
  5. Šablona obsahuje HTML stránku pro seznam knih a v ní nějaké Twig značky, do kterých se tato data automaticky doplní. Vložení těchto dat obstará automaticky Twig engine.
  6. BookController dostane zpět ze šablony výsledné HTML a to pošle uživateli jako odpověď.
  7. Uživateli se v prohlížeči zobrazí HTML stránka a vůbec netuší o tom všem, co jsme si tu nyní popsali. :)

Klidně si diagram několikrát projděte, abyste si byli v celém principu jistí.

Co byste ještě měli vědět

  • Každý kontroler má typicky několik svých šablon pro různé metody (detail, přidání, seznam,...).
  • Související modely a kontrolery (se šablonami) se sdružují do tzv. bundlů. Bundle je takový plugin reprezentující danou komponentu pro určitou funkcionalitu (např. FrameworkBundle, TwigBundle, DebugBundle atd.)
  • Všechna funkcionalita aplikací v Symfony pochází právě z jednotlivých bundlů (komponent), tudíž i naše budoucí aplikace budou tvořit samostatný bundle s výše popsanou MVC architekturou uvnitř.

To by bylo do úvodu vše.

Příště, v lekci Instalace Symfony a IDE, si zprovozníme první projekt v Symfony :)


 

Měl jsi s čímkoli problém? Zdrojový kód vzorové aplikace je ke stažení každých pár lekcí. Zatím pokračuj dál, a pak si svou aplikaci porovnej se vzorem a snadno oprav.

Všechny články v sekci
Základy frameworku Symfony pro PHP
Přeskočit článek
(nedoporučujeme)
Instalace Symfony a IDE
Článek pro vás napsal Jindřich Máca
Avatar
Uživatelské hodnocení:
90 hlasů
Autor se věnuje převážně webovým technologiím, ale má velkou zálibu ve všem vědeckém, nejen ze světa IT. :-)
Aktivity