2012-12-17 65 views
1

的用法我使用CodeIgniter 2並安裝了Ion Auth以及CodeIgniter附帶的新聞教程。

在新聞控制器,用於頁面標題的元素是這樣寫的......

$data['title'] = 'Page Title'; 

然而,在離子驗證控制器時,頁面標題的元素是這樣寫的...

$this->data['title'] = 'Page Title'; 

他們都似乎工作得很好,所以任何人都可以解釋的區別(S)?也許Ion Auth是爲舊版CodeIgniter編寫的?有沒有什麼實際的原因,我爲什麼要使用一個在另一個?請根據需要鏈接到資源。

回答

1

我想這是作者的偏好。他喜歡使用類屬性來存儲視圖的數據。它允許他跨方法分享它。如果您查看作者的其他項目(來源12,3),您可以看到兩個示例(來源1 & 2一起)。

在附註中,對於您的項目,這可能允許您使用更多視圖數據擴展Auth控制器。

class MY_Auth extends Auth { 

    function __construct() 
    { 
     parent::__construct(); 
    } 

    function index() 
    { 
     $this->data['foo'] = 'bar'; 
     parent::index(); 
    } 
} 

這將允許您使用$foo變量身份驗證視圖。 (在這種情況下爲/auth/index)。

在我自己的項目中,我喜歡爲我的視圖的數據使用受保護的屬性。它確實給你比局部變量更多的自由。您不需要始終將視圖的數據作爲參數傳遞,並且可以隨後輕鬆擴展您的控制器。

希望這會有所幫助!

0

在數據變量上添加$ this,使其可以通過類訪問。

我相信$ data或$ this->數據是只有用於「查看」。它將從「控制器」傳遞到「視圖」,因此我們可以通過「視圖」訪問該變量。

因此,在「視圖」方面將沒有任何區別。

+0

你是什麼意思,_「$這對數據變量,使它可以通過類訪問」_?你能解釋更多嗎?我想我看到'$ data ['var']'在課堂上也很好用。 – Sparky

+0

我的意思是它可以通過這個類來訪問,就像這樣:假設我們有函數a(),它裏面有$ this-> data ['page_title'] ='Test';這意味着$ this->數據可以從函數b()訪問。 但是沒關係,我們只是使用$ this-> data或$ data來實現相同的目標,從View中讀取它。 – Husni

1

如果你打算使用這個$ this-> data這意味着你可以通過類方法訪問$ this-> data。另一方面,如果你使用$ data,它只能用於當前的作用域或方法,如果你需要其他地方的數據,那麼你將不得不將它作爲參數傳遞給其他方法。