2014-07-15 134 views
1

我在努力保持寫在PHP和JavaScript,我無意中發現了一個東西做軟件的變量賦值我不熟悉:函數參數聲明

class xyz{ 
var $foo1 = ' '; 
var $foo2 = false; 
var $foo3 = ' '; 
function xyz($newVariable, $foo1 = 'rabbit', $foo2 = true, $foo3 = 'bird') { 
... 
}} 
代碼

和其他地方:

function bleh(){ 
xyz('hello); 
} 

爲什麼變量在我的第一個函數的參數字段中被賦值,而不是直接在構造函數中賦值?爲什麼bleh在聲明中只有一個參數時調用xyz?

謝謝!

+0

因爲該方法需要在其正文中操作的默認值,而不是類。 –

+0

函數xyz用默認參數聲明(即$ foo1 ='rabbit'等)。當只有1個參數在bleh()中調用xyz時,剩下的3個採用默認值。 – Jim

回答

0

這些被稱爲默認參數。如果參數丟失(未設置),它們將默認爲參數中的值。
由於函數重載不允許在PHP中這是一個很好的解決方法。

+0

謝謝。如果我想調用「xyz」並重新定義$ foo3,同時保持$ foo1和$ foo2的默認值,我該怎麼辦? – user1337

+0

重新排列參數。否則xyz('val','rabbit',true,'newValue) – Cheruvian