ما فهمته من السؤال هو: كيف يمكننا طلب دالة في الController أو الModel من خلال الView
الجواب: هناك طرق عديدة لعمل ذلك، منها:
تقوم الطريقة على وجود كلاس رئيسية بها دالة تقوم بعمل انكلود للview
هذه الكلاس ترثها الكلاس الخاصة بالكنترولر
كلاس الكنترولر:
كود PHP:
class Article extends Engine{
function __construct(){
parent::__construct();
}
function do1(){
$data = array('foo'=>$bar);
$this->view('articles/do1',$data);
}
}
كلاس Engine تحتوي على الكلاس المسئولة عن المودلز + دالة الفيو + باقي الكلاسات المساعدة
كود PHP:
class Engine{
function __construct(){
$this->model = new Model();
}
function view($view,$data = false){
if(file_exists(ANY_PATH."views/$view.php")){
if($data) extract($data);
include ANY_PATH."views/$view.php";
}else{
return false;
}
}
}
للوصول لدوال الكنترولر
للوصول للموديلز اذا احتجتها.
كود PHP:
$this->model->model_foo->bar();
----------------------------
يمكنك ان تجعل كامل البرنامج في كائن واحد و يخزن كمتغير استاتيك في دالة
و الدالة تكون مشابهة لهذه:
كود PHP:
function &get_instance($new_controller=false){
static $controller_obj = null;
if($new_controller){
$controller_obj = new $new_controller();
}
return $controller_obj;
}
بهذا يمكنك الوصول لكافة محتويات برنامجك، من الداخل او من الخارج
طلبها كاﻵتي
كود PHP:
$main_obj =& get_instance('Articles');
$obj =& get_instance();
$obj->do1();
$obj->model->model_foo->bar();