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 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! :)

Kalkulačka v PHP frameworku Symfony - Základy frameworku Symfony pro PHP

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.

Předchozí článek
Instalace Symfony a IDE
Všechny články v sekci
Základy frameworku Symfony pro PHP
Přeskočit článek
(nedoporučujeme)
Dokončení kalkulačky v Symfony
Článek pro vás napsal Jindřich Máca
Avatar
Uživatelské hodnocení:
49 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