我遇到了一些遺留代碼的問題,我嘗試將其添加到Yii項目中。php函數全局定義變量不適用於Yii
它與全局變量有關,我很清楚應該將其作爲參數傳遞,但是由於這些舊代碼在其他項目中用於重寫它並不是真正的選項。
$testVar = '123';
function testOutput() {
global $testVar;
var_dump($testVar);
}
testOutput();
現在,如果我有一個簡單的PHP文件它的工作原理文件和輸出
string '123' (length=3)
但是,如果我有一個的Yii控制器,甚至在模板它輸出這個
這個文件null
我試圖搜索這個問題,但我只是得到了一堆有關使用全局變量的結果不正確。我確定它實際上並不是Yii問題,但很可能是Yii設置的php_ini設置,但在搜索代碼或Yii文檔時我找不到任何可以解釋這一點的文檔。
這個例子可以通過用我的第一個代碼塊創建一個文件來測試,然後將它包含到Yii模板或控制器中。我甚至用一個乾淨的例子Yii項目來測試它。
我希望我沒有因爲我覺得這不僅僅是一個Yii特定問題而通過在Yii上標記這個問題來解決這個問題的可能性。
任何見解將不勝感激。
測試如果你宣佈'$的testvar = 123'函數/類裏面,它不是全球性的。 – DCoder 2013-03-04 19:42:11
如果你做'global $ testVar; $ testVar = 123;'在開始函數定義之前,它會起作用,我剛剛用Yii控制器進行了測試 – 2013-03-04 19:55:18
@MarkoD你是對的,但爲什麼呢?任何文檔都可以說明爲什麼需要這樣做,以及Yii框架爲什麼需要這樣做?你也把這個作爲答案,我會接受它。 – byoungb 2013-03-04 20:17:24