PHP - 在函数参数中赋值 - 良好实践?

Owe*_*wen 2 php

在函数调用中设置变量值 - 我没有看到这么多,这被认为是好的做法吗?

function myUpdate($status){
    ...
}

myUpdate($status = 'live');
Run Code Online (Sandbox Code Playgroud)

我个人喜欢它,因为它更具描述性.我反过来更频繁地看到它,即在函数定义中指定默认值.

phi*_*hag 5

这是一个非常糟糕的主意,因为它基本上是代码混淆.PHP并没有支持关键字参数,这可能会导致怪异的东西.例证:

function f($a, $b){
    echo 'a: ' . $a . "\n";
    echo 'b: ' . $b . "\n";
}
f($b='b-value', $a='a-value');
Run Code Online (Sandbox Code Playgroud)

这个程序不仅输出

a: b-value
b: a-value
Run Code Online (Sandbox Code Playgroud)

但也定义了变量$b$a全局上下文.这是因为

f($b='b-value', $a='a-value');
// is the same thing as ...
$b = 'b-value';
$a = 'a-value';
f($b, $a);
Run Code Online (Sandbox Code Playgroud)

有一些很好的做法可以使记忆方法参数更容易:

  • 配置编辑器/ IDE以在突出显示时显示功能的签名.
  • 如果一个函数有很多描述某种状态的参数,可以考虑将它移动到*objec*t(代之以保持状态)
  • 如果你的函数只需要很多参数,那就让它为所有非必要的参数取一个数组.这也允许方法调用者不必担心众多选项,她只需要知道她感兴趣的选项.