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

Aka*_*ash 8 php variables

通常,我看到函数被称为

$content = getContent($isAdmin = false)
Run Code Online (Sandbox Code Playgroud)

而函数声明就像

function getContent($isAdmin = true){
....}
Run Code Online (Sandbox Code Playgroud)

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

我明白这会使函数调用清楚,但我们不应该使用PHPDoc块吗?

hak*_*kre 7

我觉得你被这么多"浪费"深深震撼.

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

这里的描述部分就是更具描述性的部分,如果您查看该行,您会看到哪个参数是因为它现在有一个名称.

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

嗯,实际上这与(docblock)评论无关.即使在函数定义中,也没有对该参数的注释:

function getContent($isAdmin = true) {
Run Code Online (Sandbox Code Playgroud)

它只是通过它的名称来定义参数.docblock参数也只有在您定义函数时:

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

但是,这不是函数调用的地方:

$content = getContent($isAdmin = false)
Run Code Online (Sandbox Code Playgroud)

因此,如果您查看该行(并且在按任何热键或鼠标按钮之前),您已经阅读了该行.没有什么需要,只有代码.即使在记事本或未配置的gedit中也能正常工作.

$nonAdmin = false;
$content = getContent($nonAdmin);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果您的代码需要注释,这通常表明它太复杂了.参数的名称也比它的docblock重要得多.一个好名字通常意味着你不需要为它设置docblock标签(这意味着:维护的代码更少),因为这个名称不言自明.

现代IDE也通过静态分析了解参数的类型,因此您也不需要docblock标记.所以不,你不应该总是使用PHPDocblocks.