Witam,
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;
echo $pageView->DisplayPage($pageModel); ?>
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.