PHP-däki öz MVC çärjegiňizde kontrolerler
Bilşiňiz ýaly, çärjegiňiziň ähli kontrolerleriniň
render metody bar, bu metoda görkezmäni işledip
üýtgetmek üçin çagyrmaly. Bu metod bizimi, ulanyjy
kontrolerlerimiz, özekde ýerleşýän kakasy Controller
klasydan miras alýar. Geliň bu klasy dörediň:
<?php
namespace Core;
class Controller
{
protected function render($view, $data) {
}
}
?>
Görşüňiz ýaly, render metodu görkezme adyny we
görkezmek üçin maglumatlary parametr hökmünde alýar.
Bu metod görkezme we kontroleriň hereketi barada
maglumatlary saklaýan aýratyn Page klasynyň
obyektini yzyna gaýtarsyn. Bu klasda görkezme ady,
maglumatlar, şeýle hem sahypanyň taýtly we saýtyň
maýat faýlynyň ady bolmaly:
<?php
namespace Core;
class Page
{
private $layout;
private $title;
private $view;
private $data;
public function __construct($layout, $title, $view, $data)
{
$this->layout = $layout;
$this->title = $title;
$this->view = $view;
$this->data = $data;
}
public function __get($property)
{
return $this->$property;
}
}
?>
Şonda bizimi render metodymyzyň kody
şeýle görüner:
<?php
namespace Core;
class Controller
{
protected $layout = 'default';
protected function render($view, $data) {
return new Page($this->layout, $this->title, $view, $data);
}
}
?>
Bu ýerde näme bolýandygyny düşündirýärin. Görkezme ady
we maglumatlar metoda parametrler hökmünde gelýär. Şonda-da,
ulanyjy kontrolerinde sahypa taýtly hem kesgitlenýär -
title hassaýaty ýazylmagy arkaly. Demek, Page
klasynyň konstruktoruna geçirjek taýtly $this->title
içinde bolar.
Maýat bilen hem çylşyrymlar bar. Bilşiňiz ýaly,
bizimi çärjegiňiz default.php faýlyndan
gelen maýaty ulanyýar. Aslynda, her hereket başga
maýata hem eýe bolup biler. Bunuň üçin hereketiň
özünde layout hassaýatyna başga maýat adyny
ýazmaly.
Bu nädip gazanylýar: bizimi kakasy kontroleriňiz
layout hassaýaty bar, deslapky bahasy
'default.php'. Bu deslapky maýat bolar.
Şonda-da, eger ulanyjy kontroleriniň hereketi
layout hassaýatynyň bahasyny üýtgetse,
maýat hem başga bolar.
Meniň Controller klasymyň kodyny göçürip alyň we ony
/core/Controller.php faýlyna ýerleşdiriň.
Meniň Page klasymyň kodyny göçürip alyň we
ony /core/Page.php faýlyna ýerleşdiriň.