2013-02-07 37 views
0

我試圖將CI引入遺留應用程序,但想要使用一些從CI外部已經存在的全局變量。我一直將它們加載到/CI/config/config.php並在視圖中使用它獲取它們:CodeIgniter隱藏非CI全局變量時包括外部代碼

$ this-> config-> item('myvar');

這工作正常。但是,如果我將側邊欄放在名爲sidebar.php的模型中,該模型想要訪問存儲在globals.php中的全局變量,他們會變成未定義的。請注意,sidebar.php使用include語句從globals.php訪問全局變量。此外,全局變量在globals.php中是這樣定義的: $ myvar =「bla」;

globals.php和sidebar.php在CI之外。這兩個文件不需要執行功能。

有誰知道一個竅門,允許CI和它包含的文件訪問它以外的全局變量嗎?我不想更改舊代碼。

回答

0

事實證明,我在遺留代碼無法訪問的地方找到了globals.php文件的include_once語句。遺留代碼已經有一個include_once語句,但它已被其他地方已經包含的b/c所忽略。

我認爲它的作用與此類似的CI,如果我打開testfile.php:

testfile.php:

include_once("globals.php"); 

function testf(){ 
    include("sidebar.php"); 
} 

testf(); 

的sidebar.php

include_once("globals.php"); 

echo $myvar; //fails 
1

Codeigniter提供了一個有用的幫助函數來解決這些情況。 get_instance()函數將返回單例對象,以便您可以訪問它的許多奇妙功能。下面是你如何做到這一點的例子。

$ci =& get_instance(); 
$ci->config->item('varname'); 

這是documentation。您可以在標題中找到參考在庫中使用CodeIgniter資源

+0

謝謝。在某些時候,我認爲我們可能會希望將我們的全局變量轉移到CI,但仍然需要依賴外部變量。 – James