通常,我看到函数被称为
$content = getContent($isAdmin = false)
而函数声明就像
function getContent($isAdmin = true){
....}
为什么有人会添加一个创建变量的重载并在函数调用中只使用一次!!
据我所知,这使得函数调用变得清晰,但我们不应该使用PHPDoc块吗?
答案 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);