Zend Framework: Hello world

V druhej časti seriálu sa dozviete, čo je to MVC architektúra. Ake sú hlavné priečinky projektu vytvoreného v Zend frameworku. Vyskúšajte si vypísať text hello world.

Seriál: Začínáme se Zend Framework (3 díly)

  1. Zend Framework: Úvod do frameworku 6.8.2012
  2. Zend Framework: Hello world 20.8.2012
  3. Zend framework: základné súbory a komponenty 3.9.2012

Komponenty Zend Frameworku (ZF) používajú veľa návrhových vzorov. Ich výhodou je, že zjednodušujú komunikáciu medzi vývojármi. Návrhový vzor je určitý postup na riešenie problému, ktorý sa pravidelne vyskytuje pri vývoji aplikácií. Jeden z najpoužívanejšich v Zend Frameworku, ale aj ďalších frameworkoch, je MVC architektúra.

MVC architektúra

MVC (Model View Controller) architektúra je základom moderných frameworkov určených pre webové aplikácie. Ide o rozdelenie aplikácie do troch čiastkových komponent: údaje (Model), zobrazenie (View) a riadenie (Controller). Každá z týchto komponent sa stará o určitú časť aplikácie.

Na obrázku vidíte priebeh požiadavky v MVC architektúre. HTTP požiadavka je poslaná na server. Prijme ju radič a ďalej spracuje. Z požiadavky radič zistí, ktorý model má byť oslovený a požaduje od neho údaje (1). Niekedy pošle radič modelu údaje získané od užívateľa a požaduje ich uloženie. V tomto prípade dostane radič od modelu odpoveď o úspechu alebo zlyhaní operácie. (2). Radič odošle údaje správnemu pohľadu, ktorý zabezpečí výpis (3). V niektorých implementáciach sa môže stať, že pohľad požaduje údaje od modelu, resp. model informuje pohľad o zmene údajov (4). Nakoniec vytvorí pohľad výpis údajov a radič ho pošle naspäť prehliadaču.

Priečinky v projekte ZF

Veľkou výhodou ZF je jeho flexibilita aj pri ukladaní súborov. Bolo by možné súbory ukladať do jedného priečinka, ale určite je lepšie udržiavať medzi nimi prehľad a radiť ich do priečinkov. Autori ZF doporučujú štruktúru, ktorej sa je dobre držať.

application – Priečinok je jadrom aplikácie. Obsahuje priečinky pre konfiguráciu (config), radiče (controllers), formuláre, modely (models) , moduly, layout, pohľady (views) a aj súbor Bootstrap.php (o tom sa dozviete viac v ďalšej časti)

library – V tomto priečinku sa nachádzajú súbory ZF, ale je určený aj pre vlastné rozšírenia.

public – Obsahuje súbory, ktoré sa majú byť verejné dostupne cez webový prehliadač, teda CSS, JavaScript súbory, ale aj  index.php

Hello World

Spomenutú MVC architektúru si precvičíte na jednoduchom príklade, ktorý má za úlohu vypísať Hello world.

Radič

Zend_Controller_Action zodpovedá za vykonávanie všetkých akcií v Zend Framework aplikáciach. Každý action controller obsahuje jednu alebo viacej metód akcií, v ktorých prebieha komunikácia s modelom a pohľadom. V rámci jedného action controlleru môžete vytvoriť ľubovoľný počet akcií.

Trieda controlleru v ZF musí byť pomenovaná nasledovné: MenokontroleraController.Všimnite si, že meno controllera začína veľkým pismenom Menokontrolera. Táto trieda musí byť uložena v súbore MenokontroleraController.php. 

Vytvorte controller pre Helloworld. aplicationcontrollerHelloworldController.php.

<?php

class HelloworldController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }


}

Pre Action, ktoré sa nachádzajú vo vašom Controlleri, si vytvorte pohľad (súbor bude zatiaľ prázdny). aplicationviewsscriptshelloworldindex.html

Každa akcia je public funkcia v triede controllera a musí byť pomenovaná menoakcieAction. menoakcie začína malým písmenom ale aj ostatné písmena sú male.

Teraz si vytvorte novú akciu hello. A nezabudnite si vytvoriť aj pohľad (súbor bude tiež zatiaľ prázdny) aplicationviewsscriptshelloworldhello.html

    public function helloAction ()
    {
        $helloRetazec= 'Hello world';
        echo $helloRetazec;

    }

Keď v prehliadači otvoríte http://zend.test/helloworld/hello, kde helloworld je váš controller a hello je action, ktorú voláte. Vypísali ste hello world pomocou controlleru.

Init sa vykonáva vždy pri volaní controlleru a ak do prehliadača vložíte cestu http://zend.test/helloworld obsahujúcu len controller a neobsahujúcu akciu, vykoná sa automatický indexAction.

V ďalšej časti príkladu aplikácia vypíše text pomocou modelu. Vytvorte model  applicationmodelsHelloworld.php

<?php

class Application_Model_Helloworld
{
    public function sayHello ($name)
    {
        return '2. Ahoj, ' .$name . '! <br>';
       
    }
}

Do action helloAction pridajte nasledovné riadky.

        $helloWorldModel = new Application_Model_Helloworld();
        echo $helloWorldModel->sayHello('Peter');

Controller poslal modelu sayHello parameter Peter. A ten vráti 2. Ahoj, Peter! 

Ako tretie si vyskúšajte vypísanie textu pomocou View.  Do action helloAction doplňte nasledovné riadky.

        $helloWorldModel = new Application_Model_Helloworld();
        $this->view->helloRetazec = '3.' . $helloWorldModel->sayHello('Peter');

applicationviewsscriptshelloworldhello.phtml

<?php
   
    echo $this->helloRetazec;

 ?>

V ďalšej časti seriálu sa dozviete, ako pracovať s nástrojom Zend_Tool, zistíte načo slúži bootstrap.php a budete si môcť pomocou príkladu vyskúšať vytvoriť webaplikáciu slúžiaci na blogovanie.

Komentáře: 54

Přehled komentářů

Michal pochybnosti
oj Re: pochybnosti
Milan Re: pochybnosti
Martin Hassman Re: pochybnosti
omar Re: pochybnosti
Martin Hassman Re: pochybnosti
https://tomasfejfar.mojeid.cz/#bLGPpVT97A Re: pochybnosti
Cooler Re: pochybnosti
Cooler Re: pochybnosti
David Grudl Re: pochybnosti
omelkes Re: pochybnosti
Michal Re: pochybnosti
omelkes Re: pochybnosti
Michal Re: pochybnosti
omelkes Re: pochybnosti
David Grudl Re: pochybnosti
alancox Re: pochybnosti
omelkes Re: pochybnosti
Jakub Vrána Re: pochybnosti
Pilgrim Re: pochybnosti
Wenca dependency injection.
Martin Hassman Re: dependency injection.
LesTR Re: dependency injection.
Martin Hassman Re: dependency injection.
LesTR Re: dependency injection.
Opravdový odborník :-) Re: dependency injection.
Michal Re: dependency injection.
Pooky Re: dependency injection.
hurvajs77 Vazne nadhera :-(
Martin Hassman Re: Vazne nadhera :-(
hurvajs77 Re: Vazne nadhera :-(
Michal Re: Vazne nadhera :-(
Opravdový odborník :-) čím to asi bude...
Martin Hassman Re: čím to asi bude...
Pepa už zase?
Pooky Re: už zase?
Pepa Re: už zase?
Pooky Re: už zase?
Michal Re: už zase?
marek Chybičky
Cooler Obrázek 1, šipka 4
David Grudl Re: Obrázek 1, šipka 4
Cooler Re: Obrázek 1, šipka 4
Cooler Re: Obrázek 1, šipka 4
Cooler Vysvětlení MVC v PHP a v Zendu
maikoo neblázněte
maikoo Re: neblázněte
Cooler Konzultace pro autora článku
Cooler Re: Konzultace pro autora článku
peter.grezo Re: Konzultace pro autora článku
peter.grezo k članku
omelkes Re: k članku
Rob Neošetření Echa v controleru je chyba Frameworku
Jakub Vrána Ošetření dat
Zdroj: https://www.zdrojak.cz/?p=3698