C a C++ týden ITnetwork Flashka zdarma
Akce! Pouze tento týden sleva až 80 % na kurzy C++. Lze kombinovat s akcí 50 % bodů navíc na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!

Lekce 1 - Úvod do Laravel frameworku pro PHP

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

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 aktuální Laravel, tedy verzi 5.8.x

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í 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ě Laravel.

Potřebné znalosti

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

Routování může být provedeno několika způsoby. Požadovanou akci může obsloužit pouze jednoduchá námi definovaná 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 potřebovat (článek, uživatel, kategorie, ...). 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
  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 udá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 metodu 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 třídu pomocí dependency injection), jež nám zvaliduje odeslaná data (formulář). V našem případě to 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.


 

 

Článek pro vás napsal Jan Lupčík
Avatar
Jak se ti líbí článek?
5 hlasů
Autor se primárně věnuje vývoji webových stránek a aplikacích v PHP (speciálně ve frameworku Laravel) a je jedním z vývojářů komunitního módu TruckersMP.
Všechny články v sekci
Laravel framework pro PHP
Miniatura
Následující článek
Instalace Laravel a zprovoznění projektu
Aktivity (4)

 

 

Komentáře

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.

Zatím nikdo nevložil komentář - buď první!