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 Laravel frameworku pro PHP

Vítejte u první lekce kurzu tvorby webových aplikací v PHP frameworku Laravel. Laravel je kompletní framework pro PHP, který výrazně zjednodušuje tvorbu webových aplikací. Jedná se o kvalitně objektově navržený a zároveň o ve světě nejrozšířenější PHP framework. Díky své popularitě na něj existuje i spousta návodů a obsáhlá oficiální dokumentace. Jsou na něm postavené větší i menší projekty, některé z nich lze najít třeba na této stránce. Za zmínku také stojí, že základním stavebním kamenem tohoto frameworku je framework Symfony, avšak jeho znalost není nutností, jelikož ve výsledku se tyto dva frameworky dost liší.

Laravel si zakládá na jednoduchém a přehledném kódu. Je význačný tím, že je optimalizovaný pro reálné webové aplikace. To znamená, že vše je už předpřipravené a komponenty lze vygenerovat pomocí jednoduchých příkazů v terminálu. Pokud Laravel budete umět, vytváření webových stránek bude trvat zlomek toho, co v čistém PHP.

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

Tento kurz je psaný pro Laravel verzi 8.x.

Pozor, dodržuj přesné verze komponent/fra­meworku! 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é knihovny.
  • Pokud programujete v čistém PHP, zhruba asi 50 % kódu je nepotřebný balast. S použitím kvalitních knihoven 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-li je uživatel administrátor), budete se naopak věnovat vymýšlení zajímavých funkcí 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ě Laravel.

Potřebné znalosti

Laravel je hlavně veliká sada znovupoužitelných komponent, na níž je postavený framework pro tvorbu webových aplikací. Když programujete v Laravel frameworku, 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í Laravel frameworku 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 Laravel 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.

Pro snaživce doporučuji též nastudovat bezpečnost webových aplikací a návrh softwaru, abyste následně porozuměli určitým praktikám, které se v tomto frameworku používají.

Jak Laravel funguje

Na úvod si popíšeme základní termíny a způsoby, jak Laravel funguje.

MVC

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

Aplikace je složena z součástí třech typů, které se 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í data (např. 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 právě svůj model (uživatel, článek, komentář, ...).
  • Pohledy (Views), výstup - Obsahují Blade šablony (s HTML kódem). Blade je šablonovací systém, který na rozdíl od ostatních systémů nezakazuje používání PHP kódu v pohledu, tudíž neslouží pouze pro vkládání proměnných do HTML kódu. Blade používá speciální syntaxi, jež je poté převedena na normální PHP kód, a zároveň tento vygenerovaný pohled je následně uložen do mezipaměti pro příští použití kvůli rychlejšímu načítání (pokud není daný pohled modifikován).

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

Routy mohou být definované několika způsoby. Požadovanou akci může obsloužit pouze jednoduchá námi definovaná anonymní funkce, a nebo se o danou akci postará kontroler. Laravel za nás může dokonce vygenerovat akce, které zřejmě bude každá naše datová entita (článek, uživatel, kategorie, ...) potřebovat. Ti znalejší už zřejmě tuší, že narážím na CRUD (Create, Read, Update, Delete), o tom si ale povíme v seriálu později.

Ž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. Popišme si životní cyklus aplikace v Laravel frameworku - tedy co se stane, když uživatel zadá do adresního řádku např.:

obchod.cz/book/harry-potter

Životní cyklus stránky je jednoduše zobrazený obrázkem níže. Hned si ho popíšeme.

Cyklus stránky v Laravel frameworku znázorněný diagramem - Laravel framework pro PHP
  1. Jako první se požadavek dostane k routování. Zjistí se, o jaký požadavek se jedná (a na jaký kontroler a jeho metodu směřuje) a co vše se má zkontrolovat a stát před předáním dat dále pomocí nastavených pravidel u samotné routy.
  2. Požadavek se profiltruje přes tzv. middleware třídy, které mohou být definované už před samotným routováním, a nebo až v kontroleru. V našem případě se může jednat o ověření toho, že uživatel je přihlášený a má práva na prohlížení knížek. Nebo se jen zkontroluje, zda-li předaný parametr neobsahuje znaky, které tam mít nechceme. Middleware si můžete představit jako takovou ochranku, jež vás zkontroluje před vstupem dovnitř.
  3. Podle adresy už framework ví, že chceme něco s knihami. Proto se zavolá BookController a jeho metoda show() pro zobrazení knížky, jelikož daná adresa splňuje nastavenou routu book/{book}. Kontroleru se předá parametr z URL adresy, tedy nějaký identifikátor knížky.
  4. Nyní se zjistí, jaké všechny parametry metoda akce vyžaduje. Můžeme např. předat speciální třídu pomocí dependency injection, jež nám zvaliduje odeslaná data (formulář). V našem případě to ale bude jen instance modelu.
  5. Následně si kontroler získá instanci modelu Book s daty z databáze pomocí předaného identifikátoru "harry-potter".
  6. BookController předá data z modelu pohledu (šabloně).
  7. Šablona obsahuje HTML stránku pro zobrazení knížky a v ní nějakou Blade syntaxi i pro vypsání dat knížky. Pomocí Blade enginu se vygeneruje výsledná HTML stránka.
  8. BookController dostane zpět ze šablony výsledné HTML a to pošle uživateli jako odpověď.
  9. 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 :)

Pokud nyní některým krokům plně nerozumíte, nezoufejte. Vše si v kurzu postupně vysvětlíme. Jde jen o to, abychom pochopili, co vše se odehrává na pozadí a jak složitý může jeden požadavek být. Při správném používání komponent frameworku může parametr klidně projít desítky tříd, než se vůbec dostane ke kontroleru.

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

  • Každý kontroler má typicky hned několik svých šablon pro různé metody (detail, přidání, seznam, ...).
  • Ve většině případů každý model zastupuje jednu databázovou tabulku. Každý záznam v tabulce je poté instance modelu této tabulky s předanými hodnotami z databáze.
  • Každá část logiky má v Laravel frameworku své místo. Už jsme si trochu nastínili middleware třídy, stejně tak můžeme mít třídu pro validaci odeslaných dat (např. přes formulář), třídu pro kontrolování práv atd. O většině těchto tříd si řekneme v průběhu seriálu, všechny jsou ale detailně popsané v oficiální dokumentaci.

To by bylo do úvodu vše.

Příště, v lekci Instalace Laravel a zprovoznění projektu, si zprovozníme první projekt v Laravel frameworku.


 

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
Laravel framework pro PHP
Přeskočit článek
(nedoporučujeme)
Instalace Laravel a zprovoznění projektu
Článek pro vás napsal Jan Lupčík
Avatar
Uživatelské hodnocení:
71 hlasů
Autor se primárně věnuje vývoji webových stránek a aplikací v PHP (framework Laravel) a je jedním z herních vývojářů komunitní modifikace TruckersMP.
Aktivity