Lekce 3 - První aplikace v Symfony
V minulé lekci, Instalace Symfony a IDE, jsme si nainstalovali Symfony pomocí nástroje Composer.
Dnes si ukážeme tvorbu první jednoduché aplikace a začneme s implementací jejího modelu. Můžete tedy klidně pokračovat v projektu z minula nebo si vytvořit nový, samozřejmě se všemi náležitostmi.
Volba aplikace
Výběr vhodné aplikace, na které bychom si mohli demonstrovat vše potřebné, nebyl úplně snadný. Nakonec se vítězem stala jednoduchá kalkulačka, jejíž screenshot vidíte níže. Takže když již víme v čem a co budeme dělat, tak hurá do práce!
Postupy implementace MVC
Nyní, když již máme vše připravené, můžeme začít programovat samotnou kalkulačku. Vyvstává důležitá otázka a to, odkud začít? Za sebe mohu doporučit 3 způsoby postupu:
- Postup od Pohledu - V tomto postupu se nejdříve zamyslíme, co chceme vlastně na dané webové stránce zobrazit. Podle toho si navrhneme šablonu (view). Abychom ji mohli vyplnit potřebnými daty, navrhneme následně kontroler, který potřebná data předává do šablony. Ten ale musí tato data získat z modelu, takže nakonec naprogramuje onen model, který tato potřebná data dodává např. z databáze.
- Postup od Modelu - Zde je postup v podstatě opačný. Nejdříve se opět zamyslíme jaká data budeme potřebovat zobrazit. K získání těchto dat si vytvoříme model. Dále potřebujeme tato data zpracovat a předat do šablony a k tomu si opět uděláme potřebný kontroler. Nakonec navrhneme šablonu, kde se získaná data zobrazí do podoby webové stránky.
- Kombinace předchozích - Tento postup si bere z každého trochu. Vytváříme postupně šablony i modely a pak se je snažíme pomocí kontrolerů lepit dohromady. Toto je asi nejpoužívanější metoda, která nabízí tu výhodu, že můžeme střídavě postupovat z obou směrů vývoje, což je v praxi asi nejpoužitelnější. Jen musí člověk dát pozor, aby se v tom neztratil, zachoval rozdělení funkčnosti modelů a kontrolerů a nelepil dohromady ošklivé konstrukce, které mu zkrátka vyplynuly střetem modelu a šablony.
Já v tomto případě zvolím postup číslo dvě, protože se domnívám, že se pro naši kalkulačku více hodí. Takže začneme hezky od Modelu.
Model
src/Model/Calculator.php
Řekněme, že naše kalkulačka bude mít 4 základní operace, tj.
sčítání, odčítání, násobení a dělení. Tyto operace umístíme do
modelu, protože nám vracejí výsledky, tj. naše data. Vytvoříme si tedy
složku src/Model/
, kam umístíme soubor
Calculator.php
s naší třídou modelu Calculator
,
která definuje naše 4 operace a vypadá následovně:
<?php namespace App\Model; /** * Model operací kalkulačky. * @package App\Model */ class Calculator { /** * Sečte daná čísla a vrátí výsledek. * @param int $x první číslo * @param int $y druhé číslo * @return int výsledek po sčítání */ public function add(int $x, int $y): int { return $x + $y; } /** * Odečte druhé číslo od prvního a vrátí výsledek. * @param int $x první číslo * @param int $y druhé číslo * @return int výsledek po odčítání */ public function subtract(int $x, int $y): int { return $x - $y; } /** * Vynásobí daná čísla a vrátí výsledek. * @param int $x první číslo * @param int $y druhé číslo * @return int výsledek po násobení */ public function multiply(int $x, int $y): int { return $x * $y; } /** * Vydělí první číslo druhým bezezbytku a vrátí výsledek. * @param int $x první číslo * @param int $y druhé číslo; nesmí být 0 * @return int výsledek po dělení bezezbytku */ public function divide(int $x, int $y): int { return round($x / $y); } }
Můžete si povšimnout, že jelikož jsem se rozhodl provádět operace v celých číslech, tak chci tuto vlastnost zachovat i u dělení, tudíž výsledek zaokrouhluji na celá čísla. Dále si bystřejší z vás určitě všimli, že není ošetřeno dělení nulou. To však není chyba a my se k tomu ještě vrátíme.
Z dnešní lekce už je to ale vše.
V další lekci, Dokončení kalkulačky v Symfony, se podíváme na kontroler, šablony a další prvky .
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.