我有一個php文件,其中包含另一個使用include()
我在包含的文件中定義了一個變量$something
,並且這將根據在包含文件中運行的函數進行更改。從包含的文件中檢索變量
現在,我想在原始文件中打印那個變量,當我使用echo $something
它絕對沒有打印什麼,幫忙嗎?
我有一個php文件,其中包含另一個使用include()
我在包含的文件中定義了一個變量$something
,並且這將根據在包含文件中運行的函數進行更改。從包含的文件中檢索變量
現在,我想在原始文件中打印那個變量,當我使用echo $something
它絕對沒有打印什麼,幫忙嗎?
我們只是暫時擱置,這是片刻:)
你可能運行到一個問題,即你沒有聲明的變量一個貧窮的設計選擇作爲修改它的函數的全局。
function foo()
{
global $something;
$something='bar';
}
你會在這方面找到最有教育意義的PHP手冊頁!
那麼,爲什麼這是一個糟糕的設計選擇?首先,請查看"Are global variables bad?",它回答了C++的問題。 PHP的答案實際上沒有什麼不同 - 它可能會導致無法維護且無法讀取的代碼。
PHP還有另外一個(越來越歷史的)皺紋 - 如果'register_globals'設置打開,用戶可以通過URL查詢字符串設置全局變量。這可能會導致各種安全問題,這就是爲什麼現在默認情況下會關閉此功能(絕不會寫入需要啓用的新代碼)。
作爲一個智者曾經說過,「全局的路徑黑暗的一面。全局導致的憤怒。憤怒導致恨。恨導致患」 :)
使用get_defined_vars調試定義的變量
很可能您已聲明你的變量在全局範圍內,並試圖在功能範圍內使用它。要解決這個問題,請使用global
命令。
$myglobal = 3;
function printMyGlobal() {
global $myglobal; // will not work without this line
echo $myglobal;
}
+1,正是我在想什麼。 – 2010-06-21 20:11:01
希望OP會跟進一個新問題,「爲什麼這是一個糟糕的設計選擇」。 – Zak 2010-06-21 20:12:58
爲什麼這是一個糟糕的設計選擇? (不是在一個新的問題,但我想獲得的信息,如果你不介意:)) – user220755 2010-06-21 20:20:14