我最近一直在做很多 Objective-C 编程,现在我又回到了 PHP,老实说,我很怀念命名参数(起初我讨厌它们,现在我喜欢它们,去图)。
无论如何,在 PHP 中,我有时会看到人们将数组传递给函数作为命名参数的伪方式(额外的好处是不必担心顺序),但有时这会使函数编写过于复杂。此外,有时我想调用带有命名参数的函数,但有时不这样做更容易也更快。
有没有人简单地做这样的事情:
function calculateArea( $width, $height ) {
// do calculations here...
}
// and then call the function like so:
calculateArea( $width = 10, $height = 5 );
它似乎工作正常,至少在我的 PHP 版本中是这样,我想知道其他人是否也将此技术用作命名参数的变通方法。我还想知道是否有人知道我不应该这样做的一些令人信服的理由。
谢谢!
更新:
感谢大家的快速回复。为了让事情更清楚,我只想说我知道在大多数情况下传递关联数组是更好的选择,但有时你正在使用你已经编写的函数并且你不想改变它们的方式在代码的每个部分调用。此外,有时您正在使用辅助框架,并且您无法控制函数的编写方式。
如果我查看一年前写的代码,我看到:echo $zc->expand('Foo', 'Bar', 10, 1, 0, null, null, array(' class'=>'code'), false);
,这不是很有帮助。
所以,为了改写我的问题,我基本上是这样问的:
有时通过赋值将参数传递给函数更容易阅读。这样做有什么缺点,它是否适用于所有版本的 PHP?
最佳答案
我认为这是一个坏主意,因为如果你弄错了顺序,你就没有任何安全保障。使用 map 是一种更安全的模拟方法。在本地范围内设置这些变量的值也会产生副作用,这可能是也可能不是问题。
calculateArea( $height = 5, $width = 10 ); # oops!
function calculateArea( $width, $height ) {
// do calculations here...
}
对于数组( map ),将它们放入的顺序无关紧要。
calculateArea( array( 'height' => 5, 'width' => 10 ) ) # yea!
function calculateArea( $dimensions ) {
$width = $dimensions['width'];
$height = $dimensions['height'];
}
关于php - 在 PHP 中这样命名参数是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5843783/