PHP හි ඔබේම MVC රාමුවේ පාලකයන්
ඔබ දැනටමත් දන්නා පරිදි, අපගේ රාමුවේ
සියලුම පාලකයන්ට render ක්රමය ඇත,
එය දැක්මකට දත්ත යැවීම සඳහා ඇමතිය යුතුය.
මෙම ක්රමය අපගේ, පරිශීලක පාලකයන්
මූලයේ පිහිටා ඇති මව් පන්තිය Controller වෙතින්
උරුම කර ගනී. අපි මෙම පන්තිය සාදමු:
<?php
namespace Core;
class Controller
{
protected function render($view, $data) {
}
}
?>
ඔබට පෙනෙන පරිදි, render ක්රමය
පරාමිතියක් ලෙස දසුනේ නම සහ
පෙන්වීම සඳහා දත්ත ලබා ගනී. මෙම ක්රමය විශේෂ
පන්තියක වස්තුවක් Page, ආපසු ලබා දෙන්න
පාලක ක්රියාවේ දත්ත දර්ශනය පිළිබඳ තොරතුරු අඩංගු වේ.
මෙම පන්තියේ
දසුනේ නම, දත්ත,
තවද පිටුවේ මාතෘකාව සහ අඩවියේ පිරිසැකසුම් ගොනුවේ නම
අඩංගු වේ:
<?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;
}
}
?>
එවිට අපගේ render ක්රමයේ කේතය
මෙසේ පෙනෙනු ඇත:
<?php
namespace Core;
class Controller
{
protected $layout = 'default';
protected function render($view, $data) {
return new Page($this->layout, $this->title, $view, $data);
}
}
?>
මෙහි සිදුවන්නේ කුමක්දැයි මම පැහැදිලි කරමි. දසුනේ නම
සහ දත්ත ක්රමයේ පරාමිති ලෙස පැමිණේ. කෙසේ වෙතත්,
පරිශීලක පාලකයේ තවත් පිටුවේ මාතෘකාවක් දක්වා ඇත
- දේපල ලිවීමෙන්
title. එනම්, $this->title හි
අපි ලබා දෙන මාතෘකාව අඩංගු වනු ඇත
පන්තියේ ඉදිකිරීම්කරු වෙත Page.
පිරිසැකසුම් සමඟ ද සූක්ෂ්මතා ඇත. ඔබ දන්නා පරිදි,
අපගේ රාමුව ගොනුවෙන් පිරිසැකසුමක් භාවිතා කරයි
default.php. ඇත්ත වශයෙන්ම, සෑම
ක්රියාවකටම වෙනත් පිරිසැකසුමක් තිබිය හැකිය. සඳහා
මෙය ක්රියාවල දේපල layout හි කළ යුතුය
වෙනත් පිරිසැකසුම් නමක් ලියන්න.
මෙය සාක්ෂාත් කර ගන්නේ කෙසේද: අපගේ මව් පාලකයාට
දේපල layout, පෙරනිමියෙන්
අගය 'default.php'. මෙය
පෙරනිමි පිරිසැකසුම වනු ඇත. කෙසේ වෙතත්, නම්
පරිශීලක පාලක ක්රියාව දේපලේ අගය නැවත අර්ථ දක්වයි
layout, එවිට පිරිසැකසුම
වෙනස් වනු ඇත.
මගේ පන්තියේ කේතය Controller පිටපත් කර එය ගොනුවේ තබන්න
/core/Controller.php.
මගේ පන්තියේ කේතය Page සහ
එය ගොනුවේ තබන්න /core/Page.php.