php - 在 PHP 中这样命名参数是个坏主意吗?

标签 php named-parameters

我最近一直在做很多 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/

相关文章:

groovy - 命名参数

python - 在给定条件的情况下,是否有一种简洁的(Pythonic?)方法在Python中使用命名参数默认值?

php - 如何将文本从十六进制转换为字符串到 utf8

php - 获取 CodeIgniter Active Record 的当前 SQL 代码

php - 带有原型(prototype)的 Symfony 4 表单集合

php - 将多维数组简化为字符串

javascript - 如何为 JavaScript 中通过对象文字模拟的命名函数参数设置默认值?

javascript - Jquery 通过一次 ajax 调用同时发布文件和数据

scala - Scala命名参数: recursive call

Python MySQLdb/mysql 客户端 : bind a named set (or tuple or list) as parameter