2012-04-04 296 views
1

PHP函數的參數有沒有辦法建立與變量函數默認參數在其中如具有可變

function example($test = 'abc', $image = $scripturl . 'abc.png') 
{ 
     // ... 
} 

我之所以想這樣做,是因爲我有,我有全局變量設置源設置路徑以便在需要包含css文件或圖像時很容易抓取。

上面的代碼給出了一個意想不到T_VARIABLE ...

回答

3

這是不可能的;默認參數必須是常量。

您可以輕鬆地模仿它像這樣雖然:

function example($test = 'abc', $image = null) { 
    if($image === null) { 
     global $scripturl; 
     $image = $scripturl . 'abc.png'; 
    } 
} 
+0

某些OOP可能會有用。使$ scripturl成爲構建時設置的對象變量,然後它可以是$ this-> scripturl。 – 2012-04-04 22:13:58

+0

咋,我想這將是唯一的解決方案,並在函數中使用它:/ - 感謝您的答覆! – MLM 2012-04-04 22:39:27

+0

不要忘記'global $ scripturl;'對於不是超全球變量的外部變量 – craniumonempty 2012-04-05 11:59:24

4

的默認值應該是一個常數。它們應該具有在編譯時已經可用的值,而不是運行時。在函數參數

+0

因爲這些設置,我所建議將穩定在編譯只會在來源移動時纔會改變。我明白你的意思,但有什麼辦法按我提議的方式做事?我總是可以在函數中添加變量,雖然...我想我會用@ThiefMaster解決方案 – MLM 2012-04-04 22:38:18

1

很好,作爲錯誤已經說過,你不能用一個變量作爲函數簽名(的一部分)的默認值。

但是你可以做的,是通過一些已知的非法值(null例如),然後檢查函數中,如果需要分配:

function example($test = 'abc', $image = null) 
{ 
    global $scripturl; 
    if($image === null) $image = $scripturl . 'abc.png'; 
    ... 
}