1. díl - Úvod do Nette frameworku pro PHP

PHP Nette Framework Základy Úvod do Nette frameworku pro PHP

Vítejte u prvního dílu seriálu tutoriálů o tvorbě webových aplikací v PHP frameworku Nette. Nette je kompletní framework pro PHP, který výrazně zjednodušuje tvorbu webových aplikací. Jeho autorem je český vývojář David Grudl. Framework je kvalitně objektově navržený a v Čechách velmi rozšířený. Fungují na něm velké projekty jako např. GE Money, Slevomat, ČSFD a také obrovská spousta menších webů a eshopů. Když ho budete umět, tak nějakou práci vždy najdete. V dnešním dílu si vysvětlíme proč bychom měli používat PHP frameworky a řekneme si jak Nette funguje.

Tento seriál je psaný pro nové Nette, tedy verzi 2.3.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.

  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 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.
  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 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ě Nette.

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

Snad autora neurazím, když pro zjednodušení uvedu, že Nette je tedy vlastně balík knihoven pro PHP. Když programujete v Nette, programujete stále v PHP a navíc používáte rozhraní těchto knihoven, které je objektové a staví na MVC architektuře. Proto pro použití Nette 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 Nette 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í seriály.

Jak Nette funguje

Popišme si základní technologie a termíny, které v seriálu budou padat. Výuka Nette pro nás bude poté snadnější.

Sandbox

Abychom mohli Nette použít, potřebujeme tzv. sandbox. To je kostra webové aplikace s Nette frameworkem, do které budeme dále přidávat stránky a tak vytvoříme svůj web na Nette. Sandbox je samozřejmě ke stažení na stránkách Nette, v dalším dílu si ho stáhneme.

MVP

Jak již bylo řečeno, Nette je klasický MVC framework. Ono o sobě tedy říká, že je MVP, nicméně princip je stejný.

Aplikace stojí na komponentách třech typů, které se v aplikaci dělí o 3 základní úlohy - řízení, logiku a výstup. Jen takto rozdělená aplikace je totiž přehledná a rozšiřitelná.

  • Presentery (Presenters), řízení - Presenter je komponenta, se kterou komunikuje uživatel. Předá jí parametry a ona mu vrátí HTML stránku. Presenter 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 presenter 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 (V Nette Templates, česky šablony), výstup - Obsahují Latte šablony s HTML kódem. Latte je šablonovací jazyk, který do HTML šablon umožňuje vkládat data z PHP pomocí speciálních značek.

Router

Než se uživatel dostane k presenteru, narazí na tzv. router (česky směrovač). Úkolem této komponenty je podle URL adresy poznat co uživatel chce a zavolat mu příslušný presenter, který jeho dotaz obslouží.

Ž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 Nette - 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 Nette
  1. Jako první se požadavek dostane k routeru. Ten podle adresy zjistí, že chceme něco s knihami a proto zavolá BookPresenter a předá mu zbytek URL.
  2. BookPresenter se také podívá do parametrů, co se po něm chce a zjistí, že uživatel chce vypsat knihu harry-potter. Získá si tedy model BookModel, kterému sdělí, že chce tuto knihu. BookPresenter provádí pro knihy tzv. akce, v tomto případě zobrazení detailu. Stejně tak může např. knihu přidat nebo odstranit. Jednotlivé akce jsou v presenterech jednoduše reprezentované jako metody.
  3. BookModel dostane v parametru název knihy, tu získá z databáze a vrátí.
  4. BookPresenteru se vrátí data od modelu a tato data předá pohledu (šabloně).
  5. Šablona obsahuje HTML stránku pro detail knihy a v ní nějaké Latte značky, do kterých se vloží data. Vložení těchto dat obstará automaticky Latte engine.
  6. BookPresenteru přijde z šablony výsledné HTML a to pošle uživateli.
  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ý presenter má typicky několik svých šablon pro různé akce (detail, přidání, seznam,...).
  • Související modely a presentery (se šablonami) se sdružují do tzv. modulů (neplést s modely!). Modul je balíček komponent pro určitou část webu (např. FrontModule, AdminModule, BookModule (pokud bychom měli pro knihy opravdu složitý systém s několika modely,...).
  • Kromě MVC komponent se v Nette používají ještě tzv. Filtery. To jsou malé pomocné funkce pro šablony, které slouží k formátování výstupu. Filtery např. formátujeme datum nebo zkracujeme dlouhý text.

To by bylo do úvodu vše. Příště si zprovozníme Nette sandbox :)


 

  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 (19 hlasů) :
4.947374.947374.947374.947374.94737


 


Miniatura
Všechny články v sekci
Základy Nette frameworku
Miniatura
Následující článek
Nette sandbox a IDE

 

 

Komentáře

Avatar
saavikam
Člen
Avatar
saavikam:

Ahoj, mohu se prosím zeptat ze kdy je tento seriál? Nette doznává postupně poměrně hodně změn. A bez data uveřejnění se velmi špatně orientuje.

Všeobecně mi chybí u článků a seriálů datum, ze kdy jsou. Pro čtenáře je to matoucí. Stejně tak, jako chybějící seznam nových článků.

 
Odpovědět  +11 23.3.2015 12:11
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na saavikam
tomasmanhal:

Nové články chodí pravidelně emailem :-) Alespoň mě tedy ano :-) Ale přikláním se k tomu uvedení toho data publikace :-)

Odpovědět  +3 23.3.2015 12:13
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
Laďa
Člen
Avatar
Odpovídá na saavikam
Laďa:

Mužů jen souhlasit. Strašně mi tady to datum uverejneni chybí.

 
Odpovědět  +5 12.5.2015 12:40
Avatar
vodacek
Redaktor
Avatar
Odpovídá na Laďa
vodacek:

souhlasím taky mě to vadí

 
Odpovědět  +1 12.5.2015 12:49
Avatar
Karl
Člen
Avatar
Karl:

klikněte si na odkaz Aktivity (uvedeno nad autorem) - tam je datum publikování článku i případné editování

Editováno 9. února 10:13
 
Odpovědět 9. února 10:12
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 5 zpráv z 5.