在PHP中命名这样的参数是一个坏主意吗?
作者:互联网
我最近一直在做很多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?
解决方法:
我认为这是一个坏主意,因为如果你的订单错了,你没有任何安全感.使用地图是一种更安全的模拟方法.您还可以在本地范围内设置这些变量的值,这可能是也可能不是问题.
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,named-parameters 来源: https://codeday.me/bug/20190721/1496142.html