PHP函數的參數有沒有辦法建立與變量函數默認參數在其中如具有可變
function example($test = 'abc', $image = $scripturl . 'abc.png')
{
// ...
}
我之所以想這樣做,是因爲我有,我有全局變量設置源設置路徑以便在需要包含css文件或圖像時很容易抓取。
上面的代碼給出了一個意想不到T_VARIABLE ...
PHP函數的參數有沒有辦法建立與變量函數默認參數在其中如具有可變
function example($test = 'abc', $image = $scripturl . 'abc.png')
{
// ...
}
我之所以想這樣做,是因爲我有,我有全局變量設置源設置路徑以便在需要包含css文件或圖像時很容易抓取。
上面的代碼給出了一個意想不到T_VARIABLE ...
這是不可能的;默認參數必須是常量。
您可以輕鬆地模仿它像這樣雖然:
function example($test = 'abc', $image = null) {
if($image === null) {
global $scripturl;
$image = $scripturl . 'abc.png';
}
}
的默認值應該是一個常數。它們應該具有在編譯時已經可用的值,而不是運行時。在函數參數
因爲這些設置,我所建議將穩定在編譯只會在來源移動時纔會改變。我明白你的意思,但有什麼辦法按我提議的方式做事?我總是可以在函數中添加變量,雖然...我想我會用@ThiefMaster解決方案 – MLM 2012-04-04 22:38:18
號的默認值必須是恆定的值,而不是表達式的結果:http://php.net/manual/en/functions.arguments.php#functions.arguments.default
在參數解析點,$在scriptUrl不會反正存在的,總是會出來爲NULL,因爲在使用它之前你無法使它成爲全局的。
很好,作爲錯誤已經說過,你不能用一個變量作爲函數簽名(的一部分)的默認值。
但是你可以做的,是通過一些已知的非法值(null
例如),然後檢查函數中,如果需要分配:
function example($test = 'abc', $image = null)
{
global $scripturl;
if($image === null) $image = $scripturl . 'abc.png';
...
}
某些OOP可能會有用。使$ scripturl成爲構建時設置的對象變量,然後它可以是$ this-> scripturl。 – 2012-04-04 22:13:58
咋,我想這將是唯一的解決方案,並在函數中使用它:/ - 感謝您的答覆! – MLM 2012-04-04 22:39:27
不要忘記'global $ scripturl;'對於不是超全球變量的外部變量 – craniumonempty 2012-04-05 11:59:24