2012-10-07 22 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);