2012-10-07 24 views
8
調用函數被調用像

使用臨時變量,而在PHP

$content = getContent($isAdmin = false) 

通常情況下,我所看到的功能而函數的聲明就像是

function getContent($isAdmin = true){ 
....} 

爲什麼會有人添加創建變量的過載並在函數調用中僅使用它一次!

我明白,這使得函數調用清晰,但我們不應該使用PHPDoc塊嗎?

+1

這順便說一下變量賦值是相當便宜。無論如何,即使不存在變量,您仍然有麻煩。 PHP對這樣的事情非常好。不要擔心變量,即使只使用一次,也要使用它們。他們會改進你的代碼。 – hakre

回答

7

我有這樣的感覺,你被這麼多「浪費」深深地震撼了。

保持冷靜,使用變量沒什麼不好,你應該經常使用它們。他們通常會使您的代碼更具描述性,甚至更快。

這裏比較具有描述性的部分就是這種情況,如果你看那條線,你會看到哪個參數是因爲現在它有一個名字。

但是我們不應該使用PHPDoc塊嗎?

呃,實際上這和(docblock)的評論無關。即使在函數定義,對於參數沒有評論:

function getContent($isAdmin = true) { 

這是由它的名字參數只是定義。

... 
* @param $isAdmin bool (optional) true or false, true by default 
... 
function getContent($isAdmin = true) { 

然而,是不是在函數被調用:此外,當你定義函數的文檔塊參數將只有

$content = getContent($isAdmin = false) 

所以,如果你看一下這行(和按任何熱鍵前或鼠標按鈕),你已經閱讀過。沒有必要,只有代碼。即使在記事本或未配置的gedit中也能正常工作。

$nonAdmin = false; 
$content = getContent($nonAdmin); 

而且順便說一句,如果你的代碼需要評論,這通常是一個標誌,它太複雜了。此外,參數的名稱比docblock更重要。好的名字通常意味着你不需要有一個docblock標籤(這意味着:更少的代碼來維護),因爲這個名字本身就說明了。

此外,現代IDE通過靜態分析瞭解參數的類型,因此您也不需要docblock標記。所以不,你不應該總是使用PHPDocblocks。

+0

+1強烈的爭論,我不知道什麼時候PHP – Baba

+0

+1支持關鍵字參數爲「所以不,你不應該總是使用PHPDocblocks。」,這只是讓我想知道,因爲大多數現代IDE顯示函數參數名稱其數據類型(如果提供了默認值) – Akash

3

寫,如:

$content = getContent($isAdmin = false) 

$isAdmin來,如果你發出var_dump($isAdmin)定義外連的功能範圍,即你bool(false)

這樣,你節省了VAR分配:

$isAdmin = false; 
$content = getContent($isAdmin); 
... 
someStuff($isAdmin);