Wiem ze temat wzorca MCV byl walkowany setki razy, wiekszosc z tych tematow przeczytalem, ale powiem szczerze ze zamiast pomoc, bardziej zagmatwaly to zagadnienie. Zrobilem cos takiego:
Kontroler
class PageController { public function CheckAccess($logged) { if($logged == 1) return $logged; else return false; } }
Model
class PageModel { private $access; private $makePage = ''; private $pagePart; public function GeneratePage($logged) { $this->access = $logged; if($this->access == true){ $this->makePage .= $this->MakeHeader(); $this->makePage .= $this->MakeBody(1); $this->makePage .= $this->MakeFooter(); }else{ $this->makePage .= $this->MakeHeader(); $this->makePage .= $this->MakeBody(0); $this->makePage .= $this->MakeFooter(); } return $this->makePage; } public function MakeHeader() { $this->pagePart = ' /* kod strony */'; }else{ $this->pagePart =' /* kod strony */ '; } return $this->pagePart; } public function MakeFooter() { $this->pagePart = ' /* kod strony */ '; return $this->pagePart; } public function __toString() { return $this->makePage; } }
Widok
class PageView { private $page; public function DisplayPage($page) { $this->page = $page; return $this->page; } }
index.php
<? require_once("page/pageController.php"); require_once("page/pageModel.php"); require_once("page/pageView.php"); $pageController = new PageController; $status = $pageController->CheckAccess($_SESSION['login']); $pageModel = new PageModel; $pageModel->GeneratePage($status); $pageView = new PageView; ?>
1. Czy mniej wiecej tak wyglada wzorzec MVC?
2. Czytalem artykul ktory jest umieszony na glownej stronie dotyczacy MVC (dokladnie mowiac przyklad z wykorzystaniem arkuszy stylow) i mam pytanie:
//fragment kodu wlasnie z tego artykulu public function __construct(PageController $pageController){ $this->pageController=$pageController; $this->controllerStyle=$pageController->getStyle(); }
Dlaczego jako parametr w konstruktorze, podany jest PageController? Domyslam sie ze jest to odwolanie do instancji, klasy PageController, ktora w tamtym przykladzie byla kontrolerem. Ale po co/dlaczego? Kiedy nalezy uzywac takich odwolan?
3. Dlaczego abym mogl wyswietlic strone musialem uzyc magicznej funkcji __toString? Wiem ze ona konwertuje dane do typu string, ale dlaczego to jest konieczne, przeciez zmienna $makePage jest stringiem.
4. Prosilbym rowniez o wytkniecie najmniejszych bledow, chcialbym od samego poczatku uczyc sie poprawnej formy uzywania tego wzorca.