2010-05-28 100 views
1

我正在制作自己的PHP-MVC框架。我有一个关于控制器和视图关联的问题。 我爱的Zend框架内使用控制器视图如下方式:实现像ZendFramework一样有效的控制器/视图关联

$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(){ 
    } 
} 
+1

你想删除的构造函数和析构函数? – BoltClock 2010-05-28 15:52:09

+0

Zend认真只允许一个视图每控制器操作? – 2010-05-28 17:05:46

回答

1

你并不需要神奇的功能来实现这一点。你可以这样做:

$this->view->var1 = 'val1'; 

创建您叫setassign控制器的方法,需要一个名称和值并存储在数组中。在调用视图之前,循环访问该数组并分配给您的视图对象:

foreach ($this->viewVars as $viewVar) { 
    $this->view->$viewVar['name'] = $viewVar['val']; 
} 
0

使用魔术方法__set()和__get()。

protected $ _data = array();

public function __set($name, $value) 
{ 
    $this->_data[$name] = $value; 
} 

public function __get($name) 
{ 
    return $this->_data[$name]; 
} 

然后检索未设置值,等当实现错误处理...

相关问题