2010-05-28 101 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]; 
} 

然後檢索未設置值,等當實現錯誤處理...

相關問題