我正在创建自己的PHP-MVC框架。我有一个关于控制器和视图关联的问题。 我喜欢Zend框架在Controller中使用视图的方式如下:
$this->view->data = 'Data here';
所以它可以在视图中使用如下:
echo $this->data;
我想知道如何实现这种关联。
我想删除/** **/
之间的代码,并希望替换一些魔术函数。我的控制器代码如下:
class UserController extends Controller{
/************************************/
public function __construct(){
$this->view = new View();
$this->view->setLayout( 'home' );
}
function __destruct(){
$this->view->render();
}
/************************************/
public function index(){
$this->redirect('user/login');
}
public function login(){
}
public function register(){
}
public function forgotPassword(){
}
}
答案 0 :(得分:1)
你真的不需要魔术功能来实现它。你可以这样做:
$this->view->var1 = 'val1';
在控制器中创建一个名为set
或assign
的方法,该方法采用名称和值并存储在数组中。在调用view之前,遍历该数组并分配给您的视图对象:
foreach ($this->viewVars as $viewVar) {
$this->view->$viewVar['name'] = $viewVar['val'];
}
答案 1 :(得分:0)
使用魔术方法__set()和__get()。
protected $ _data = array();
public function __set($name, $value)
{
$this->_data[$name] = $value;
}
public function __get($name)
{
return $this->_data[$name];
}
然后在检索未设置的值时实现错误处理等...