2011-04-30 107 views
1

我的意思是,你如何將你的論點傳遞給函數?如何將您的(可選)參數傳遞給用戶定義的函數?

做你的用戶函數調用看起來是這樣的:

$this->getSomeNumber($firstArg, $secondArg, null); 

或者你發現了多少參數傳遞給函數,然後做的工作?

我不知道是否有任何編碼風格覆蓋此。其他編程語言如何處理這個問題?

UPDATE

例FOT的,誰不明白:

function doSmth($firstArgument) { 
    if(func_num_args() > 1) { 
     //do job if second argument was passed 
    } 
} 

第二個例子:

function doSmthElse($firstArgument, $secondArgument) { 
    if($secondArgument) { 
     //do job if second argument was passed 
    } 
} 

然後你把它想:

doSmth($var, $secondvar) or doSmth($var) 

//**OR** 

doSmthElse($var, $secondvar) or doSmthElse($var, null) 

哪個更好用?我的意思是其他程序員對你的期望是什麼?

+0

你的問題不清楚。你可以用它所期望的參數調用一個函數... – 2011-04-30 21:32:28

+0

我想你想要的是重載 – Andre 2011-04-30 21:33:42

+0

@Oli,我問如何編寫你的函數,如何期待參數傳遞給你的函數。如果不需要傳遞參數,是否將可選參數設置爲null。這完全是關於編碼風格。 – Buddy 2011-04-30 21:35:47

回答

1

如果參數爲可選,具有默認值通常指定:

function foo($requiredArg, $optionalArg = null) 

如果函數採用多個可選參數,指定它們明確地像在上面的例子。

如果函數採用一個可變數量的參數(例如,如sprintf),然後使用func_get_args & CO。

/** 
* Specify here as a comment that this function takes a variable amount of args 
*/ 
function doSomethingWithParameters() { 
    ... 
} 

如果該函數採用所需的參數的參數可變量的,同樣的方法也適用:指定明確地像在第一示例中總是必需的參數。

使用註釋來澄清變量參數等是一個好主意。使用數組可能更好,但這可能取決於你在做什麼。

+0

謝謝你清除這個。是從PHP手冊還是從你的expirience? – Buddy 2011-04-30 22:05:25

+0

經驗,不知道手冊是否真的提到了這種「最佳實踐」 – 2011-04-30 22:07:03

0

你想那些ARGS之前美元符號:

$this->getSomeNumber($firstArg, $secondArg, null); 

但如果你真的問如何使用可變的參數個數在PHP中,看到func_num_args和func_get_args的幫助。

+0

錯字錯誤。查看更新。這是關於編碼風格。 – Buddy 2011-04-30 21:46:49

+0

哦,現在你已經明確了,我希望看到你調用func_num_args並根據你是否有一個或兩個參數來調用不同的函數。 – 2011-04-30 21:49:18

+0

看到這個幫助頁http://us.php.net/manual/en/function.func-num-args.php – 2011-04-30 21:50:25

相關問題