目前我们在Controller中调用虚拟类,还需要如下代码:
news=loadclass(‘news′); ret = news−>getNewsList();但是呢,我们希望以后是这样调用的 this->news->getNewsList();//这样就可以直接调用了。
这里我们要使用__get($p) 当调用类变量不存在的时候进行触发的一个函数。
<?php
//所有controller的父类 抽象类
abstract class _Master{
var $_view='index';//模板名称
var $_vars = array();
function setView($viewName){
$this->_view = $viewName;
}
function getView(){
return LKPHP_PATH.'/MVC/View/'.LKPHP_VIEWPATH.'/'.$this->_view.'.'.LKPHP_EXTENSION;
}
function setVar($varName,$varValue){
//设置变量
$this->_vars[$varName] = $varValue;
}
function run(){
//解包变量
extract($this->_vars);
//加载头部模板
include(LKPHP_PATH.'/MVC/View/'.LKPHP_VIEWPATH.'/'.LKPHP_VIEWHEADER.'.'.LKPHP_EXTENSION);
include($this->getView());//加载模板body
include(LKPHP_PATH.'/MVC/View/'.LKPHP_VIEWPATH.'/'.LKPHP_VIEWFOOTER.'.'.LKPHP_EXTENSION);//尾部
}
//魔术方法
function __get($p){
$c=load_class($p);
return $c;
}
}
?>