在PHP中调用函数时使用临时变量

时间:2012-10-07 18:24:37

标签: php variables

通常,我看到函数被称为

$content = getContent($isAdmin = false)

而函数声明就像

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

为什么有人会添加一个创建变量的重载并在函数调用中只使用一次!!

据我所知,这使得函数调用变得清晰,但我们不应该使用PHPDoc块吗?

2 个答案:

答案 0 :(得分:7)

我觉得你被这么多“浪费”深深震撼。

保持冷静,使用变量没什么不好,你应该经常使用它们。它们通常会使您的代码更具描述性,甚至更快。

这里的描述部分就是一个更具描述性的部分,如果你看一下那一行,你会看到哪个参数,因为它现在有一个名字。

  

但我们不应该使用PHPDoc块吗?

嗯,实际上这与(docblock)评论无关。即使在函数定义中, 参数:

也没有注释
function getContent($isAdmin = true) {

这只是参数的名称定义。 docblock参数也只有在您定义函数时才会出现:

...
 * @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。

答案 1 :(得分:3)

写作:

$content = getContent($isAdmin = false)

即使在函数范围之外也可以定义$isAdmin,即如果您发出var_dump($isAdmin),则会获得bool(false)

这样就可以保存var赋值:

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