Nat*_*ate 7 php parameters coding-style function
当有一个函数需要传递许多参数时,例如七个参数,这是更好的做法:
function foo($par1, $par2, $par3, $par4, $par5, $par6, $par7)
{
}
Run Code Online (Sandbox Code Playgroud)
要么
function foo(array $args)
{
}
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,$args将参数作为元素的数组.
我一直不一致地使用这两种方法.
使用第一种方法的缺点是,如果你得到一个参数的顺序错误,你就搞砸了(而且它很难调试,因为它并不总是很明显).这是使用数组方法的优点.
使用第一种类型的优点(恕我直言)是一个好的PHP编辑器,如PhpStorm将在你输入函数时显示参数的名称,这比去函数看看需要传递什么参数更容易在数组中.
感谢您的建议.
从理论上讲,每个参数都应包含一个逻辑整体.集合旨在表示值的集合,而不是方法参数的集合; 各个参数应分别通过,以明确指出方法的目的.
实际上,在数组中传递参数时,必须进行大量的手动检查以确保传递了正确的参数.通过为参数提供清晰的逻辑名称(以及可能的类型提示),您可以避免任何歧义.此外,正如已经陈述的评论,如果一个方法需要7个参数,那么对于某些重构来说可能已经成熟.
编辑:如果您的方法/函数确实接受了一组模糊定义的"选项",这些选项会影响代码仅以较小的方式执行的操作,请考虑使用Symfony OptionsResolver组件,以极大地简化选项数组的验证.