2013-02-11 59 views
0

我有一個問題。我爲我的網站製作了一些mvc'ish結構。 我希望能夠在我的視圖內使用我的變量,而無需分配它們。如何在視圖內使用變量而不分配它們php

讓我用一個例子說明一下,這裏是我的控制器的一小部分:

class members extends controller{ 

public function _construct() 
{ 
    parent::__construct();   

} 
public function index() 
{ 
    $test = 'test variable'; 
    $data['test2'] = 'test variable 2'; 

    view::setTemplate('header'); 
    view::setTemplate('homepage', $data); 
    view::setTemplate('footer'); 
} 
} 
在我看來類的setTemplate()函數

,我用extract($data),然後我包括視圖文件。按照預期,這樣我可以回顯$ test2並獲得'測試變量2'作爲輸出。

但是,有沒有辦法讓視圖'記住'第一個$測試變量,而不必將其添加到setTemplate函數?

+0

我想這裏要問的問題是:爲什麼?記住,編寫明確的自我記錄代碼是可維護性的重中之重。 – 2013-02-11 20:40:51

+0

'$ this-> test ='test variable';'因此它變成了對象的一個​​屬性。 – 2013-02-11 20:40:56

+0

'extract()'是有史以來最糟糕的PHP函數之一。感謝您爲將來需要調試代碼地獄的開發人員的生活。 – AlienWebguy 2013-02-11 20:41:52

回答

0

聲明:本CODE未被測試

可以使用變量變量到setTemplate方法中定義的變量和包括直接從那裏視圖。

<?php 
function setTemplate($view, $data) { 
    if(is_array($data)){ 
    foreach($data as $var => $val){ 
     $$var = $val; 
    } 
    } 
    include('views/'.$view.'.php'); 
} 
?> 
相關問題