Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Budowa kontrolera na przykładzie implementacji MVC

Tworzenie praktycznej klasy modelu - generatora strony WWW

Jak już wspomniałem, ponieważ zdefiniowaliśmy już odpowiednią klasę kontrolującą tworzenie dokumentu WWW, logicznym następstwem wydaje się stworzenie odpowiedniego modelu, który zostanie następnie powiązany z naszą klasą kontrolera.

Naszym modelem zostanie klasa generująca stronę WWW; jej zawartość widać poniżej:

<?
// definicja klasy WebPage (model)

class WebPage{
    private $pageController;
    private $controllerStyle;
    private $page='';
    public function __construct(PageController $pageController){
        $this->pageController=$pageController;
        $this->controllerStyle=$pageController->getStyle();
    }
    public function doHeader(){
        $this->page='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" href="defaultstyle.css" type="text/css" /><title>Sample Web Page</title></head>';
    }
    public function doBody(){
        $this->page.='<body><div id="header"><h1>Header section</h1></div><div id="navbar"><ul><li><a href="#" title="Link 1">Link 1</a></li><li><a href="#" title="Link 2">Link 2</a></li><li><a href="#" title="Link 3">Link 3</a></li><li><a href="#" title="Link 4">Link 4</a></li><li><a href="#" title="Link 5">Link 5</a></li><li><a href="#" title="Link 6">Link 6</a></li></ul></div><div id="leftcol"><h1>Left column</h1></div><div id="centercol"><h1>Center column</h1></div><div id="rightcol"><h1>Right column</h1></div>';
    }
    public function doFooter(){
        $this->page.='<div id="footer"><h1>Footer section</h1></div></body></html>';
    }
    public function getPage(){
        return $this->page;
    }
    public function getControllerStyle(){
        return $this->controllerStyle;
    }
} 
?>

Jeżeli prześledzisz uważnie powyższy kod, bardzo szybko zrozumiesz zasadę jego działania, ponieważ sama jego struktura jest całkiem prosta. W skrócie mówiąc, klasa ta dostarcza prostych metod odpowiadających za budowę trzech typowych elementów składających się na stronę internetową.

Oczywiście, mowa tu o nagłówku, głównym kontenerze oraz stopce, które będą generowane odpowiednio przez metody "doHeader()," "doBody()" i "doFooter()".Zwróć przy tym uwagę, że klasa przyjmuje obiekt typu "PageController", który jest następnie bezpośrednio przypisywany jako nowa właściwość klasy.

Zostawiając na chwilę wspomniane metody, powinieneś zwrócić szczególną uwagę na powiązanie, jakie stworzone zostało pomiędzy tą klasą, a poznaną wcześniej klasą kontrolera. Zauważ, w jaki sposób kontroler wskazuje modelowi (czyli naszej klasie "WebPage"), z którego arkusza stylów powinien skorzystać w momencie generowania dokumentu - używając do tego metody "getControllerStyle".

Czy zaczynasz już teraz zauważać, w jak prosty sposób można budować odpowiednią interakcję pomiędzy kontrolerem a modelem? Mam nadzieję, że tak!

Ponieważ zbudowaliśmy już dwa podstawowe elementy naszej aplikacji generującej stronę WWW, potrzebujemy teraz dołożyć trzeci komponent, będący uzupełnieniem naszych założeń. Jak już na pewno zgadłeś, mowa tu o nowej klasie PHP. Klasa ta użyje źródła dokumentu i dołączy do niego różne arkusze stylów w sposób dynamiczny, w czasie tworzenia dokumentu.

Przypominając sobie na chwilę wzorzec MVC jasnym staje się, że brakującym elementem jest klasa widoku (View) i ona właśnie będzie tematem następnej części tego artykułu.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (2)
Słabizna
Czwartek 20 Sierpień 2009 6:37:31 pm - mistrzhtml

Niestety, artykuł z serii "nie mam nic do napisania, ale napiszę". To ma być wyjaśnienie modelu MVC? Raczej jakieś idiotyczne przypinanie arkusza CSS, które nic nie wnosi i jest tylko dodatkiem. Niedostateczny!

30 maja
Niedziela 07 Styczeń 2007 10:55:31 am - jordan1977 <mroszak2001_at_yahoo.com>

rozkaz zostanie wykonany 30 maja

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System