0
我可以通過多種方式來實現以下功能;但我希望有一個超級優雅的解決方案。我可以使用PHP超全局變量作爲用戶定義函數參數的默認值嗎?在PHP中使用Superglobal作爲默認函數參數
實施例:
function test1($foo=$_SERVER['PATH']) {
echo $foo;
}
上面的代碼吐出一個錯誤。就像我說的,我知道我可以用下面的代碼實現同樣的事情(但上面的代碼是更具吸引力):
function test2($foo) {
if (!isset($foo)) $foo = $_SERVER['PATH'];
echo $foo;
}
感謝您的幫助!
我相信第一個解決方案不會工作,因爲在腳本評估時(類似於解釋語言的編譯),$ _SERVER ['PATH']'值尚未定義。 –
這聽起來似乎合理; PHP引擎吐出的錯誤是「解析錯誤:語法錯誤,第2行M:\ test.php中出現意外的T_VARIABLE」您認爲該錯誤與您的解釋是否一致? – lukeavsec
我會說它的確如此。一個變量(一個運行時元素)在靜態上下文(一個「編譯」時間元素)中可能沒有意義。 –