Vikarabati katika Mfumo wa MVC Wako katika PHP
Kama unavyojua tayari, vikarabati vyote vya mfumo wetu
wana mbinu render, ambayo
inahitaji kuitwa kwa ajili ya kutuma data kwenye mtazamo.
Mbinu hii vikarabati vyetu, vikarabati vya mtumiaji
vinarithi kutoka kwa darasa la mzazi Controller,
lililoko kwenye kiini. Hebu tutengeneze darasa hili:
<?php
namespace Core;
class Controller
{
protected function render($view, $data) {
}
}
?>
Kama unavyoona, mbinu render inapokea kigezo
jina la mtazamo na data kwa ajili ya
kuonyesha. Hebu mbinu hii irudishe
kitu cha darasa maalum Page, ambamo
utapatikana taarifa kuhusu mtazamo
wa data ya kitendo cha kikarabati. Katika darasa hili
utakuwemo jina la mtazamo, data,
na pia kichwa (title) cha ukurasa na jina la faili lenye mpangilio (layout)
wa tovuti:
<?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;
}
}
?>
Basi kanuni za mbinu yetu render zitakuwa
zinavyoonekana hivi:
<?php
namespace Core;
class Controller
{
protected $layout = 'default';
protected function render($view, $data) {
return new Page($this->layout, $this->title, $view, $data);
}
}
?>
Naeleze, nini kinatokea hapa. Jina la mtazamo
na data hufika kama vigezo vya mbinu. Hata hivyo,
katika kikarabati cha mtumiaji imewekwa pia
kichwa (title) cha ukurasa - kwa njia ya kuandika sifa
title. Hivyo, katika $this->title
ndio utakuwemo kichwa, ambacho tutatambulisha
kwa mkabidhi wa darasa Page.
Kuna pia mambo muhimu kuhusu mpangilio (layout). Kama unavyojua,
mfumo wetu unatumia mpangilio (layout) kutoka kwa faili
default.php. Kweli, kila
kitendo kinaweza kuwa na mpangilio (layout) mwingine. Kwa
ajili ya hili inahitajika katika kitendo chenyewe katika sifa layout
kuandika jina lingine la mpangilio (layout).
Jinsi hii inafikiwayo: kikarabati chetu cha mzazi
kina sifa layout, kwa msingi
ikiwa na thamani 'default.php'. Hii
ndio itakuwa mpangilio (layout) kwa msingi. Hata hivyo, ikiwa
kitendo cha kikarabati cha mtumiaji kitabadilisha
thamani ya sifa layout, basi mpangilio (layout)
utakuwa mwingine.
Nakili kanuni za darasa langu Controller na uziweke kwenye faili
/core/Controller.php.
Nakili kanuni za darasa langu Page na
uziweke kwenye faili /core/Page.php.