Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

3. díl - První aplikace v Symfony

PHP Symfony Základy První aplikace v Symfony

Unicorn College ONEbit hosting 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 další lekce online kurzu o tvorbě webových aplikací v PHP frameworku Symfony. V tomto tutoriálu bych chtěl prakticky navázat na lekci předchozí. Ukážeme si tedy tvorbu první jednoduché aplikace a začneme s implementací jejího modelu.

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

Instalace pomocí Composer

Vím, že instalaci jsme se již dosytosti věnovali v minulé lekci, ale abyste nebyli o nic ochuzeni, chci zde ukázat ještě jednu možnost a tou je instalace pomocí Composer. jedná se o nástroj třetích stran pro instalaci a správu závislostí projektů v PHP obecně.

Samotnou jeho instalaci zde již rozebírat nebudu, případně se podívejte zde. Když již máte Composer připravený, stačí si otevřít danou složku vašeho webového serveru a spustit konkrétní příkaz, který zařídí celou instalaci Symfony a zkontroluje i potřebné závislosti.

Nový projekt tedy vytvoříme jediným příkazem:

composer create-project symfony/framework-standard-edition calculator-symfony

Tímto příkazem se tedy vytvořila základní struktura projektu ve složce calculator-symfony/. Nezapomeňte k ní přidat .htaccess pro automatické přesměrování do složky web/, o kterém jsme si také již říkali.

Pozn.: Instalace se vás rovnou zeptá i na některé základní parametry nastavení Symfony. Pro naše potřeby můžete nechat všude výchozí hodnoty (mačkat 'enter'), ale pokud budete tvořit vlastní projekt, tak např. údaje připojení k databázi můžete nastavit již zde při instalaci. ;)

Nyní stačí zadat do webového prohlížeče URL adresu:

http://localhost/calculator-symfony/

a měli byste vidět tuto základní stránku Symfony projektu (verze se může lišit).

Symfony projekt v PHP

Pokud se vám tato stránka z nějakého důvodu nezobrazuje, doporučuji znovu poctivě projít návod i odkazy výše nebo třeba zkusit jiný způsob instalace. A když již opravdu nebudete vědět kudy kam, můžete mi vždy napsat do komentářů pod článek. ;)

Závislosti

Když jsem je již zmínil, ještě si dovolím malé, ale důležité připomenutí k softwarovým závislostem. Pro instalaci Symfony se předpokládá, že máte zprovozněný webový server (např. Apache) s PHP ve verzi 5.3 nebo vyšší. Pokud to ještě z nějakého důvodu nemáte a nevíte, jak na to, doporučuji přečíst si tento článek. Podrobný návod, jestli váš server splňujete všechny požadavky a jak si to ověřit pak opět naleznete v minulé lekci.

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/AppBundle/Mo­del/Calculator­Manager.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 v bundlu naší aplikace src/AppBundle/Mo­del/, kam umístíme soubor CalculatorMana­ger.php s naší třídou modelu CalculatorManager, která definuje naše 4 operace a vypadá následovně:

<?php

namespace AppBundle\Model;

/**
 * Model operací kalkulačky.
 * @package AppBundle\Model
 */
class CalculatorManager
{
        /**
         * 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($x, $y)
        {
                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($x, $y)
        {
                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($x, $y)
        {
                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($x, $y)
        {
                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 tohoto dílu už je to ale vše, takže na kontroler, šablony a další prvky se podíváme v díle příštím. :)


 

 

Článek pro vás napsal Jindřich Máca
Avatar
Jak se ti líbí článek?
3 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. :-)
Miniatura
Předchozí článek
Symfony Standard Edition a IDE
Miniatura
Všechny články v sekci
Základy frameworku Symfony pro PHP
Miniatura
Následující článek
Dokončení kalkulačky v Symfony
Aktivity (4)

 

 

Komentáře

Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Matúš Petrofčík:16. března 21:41

Jindro, máš tam preklep po inštalácii cez composer, máš tam "nette" namiesto "symfony" :) Už sa teším na ďalšie diely!

Odpovědět 16. března 21:41
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Matúš Petrofčík
Jindřich Máca:16. března 22:43

Díky, už jsem odeslal opravu. ;)

 
Odpovědět 16. března 22:43
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 2 zpráv z 2.