为什么命名参数似乎在PHP中有效?

时间:2014-07-18 20:24:02

标签: php named-parameters

我最近在PHP中发现了一些似乎使用命名参数的代码,并且感到很惊讶。

$this->setCellPaddings ($left = '', $top = '', $right = '', $bottom = '1');

不幸的是,快速测试证实了我的恐惧:只有订单才有意义。如果我删除前三个参数,并且只传入$bottom,我会期望一切仍然有效,但是这完全基于位置解释,因此左侧填充由此函数设置,并且不是底部填充物。

$this->setCellPaddings ($bottom = '1');

有点谷歌搜索确认named parameters for PHP are still just an RFC

所以:为什么这个有效?为什么PHP允许您将赋值插入到期望值的位置?

2 个答案:

答案 0 :(得分:2)

这是有效的,因为赋值是返回值的表达式:

$a = $b = '1';
var_dump($a);

输出:

string(1) "1"

即,代码似乎传递了一个值并同时为它设置了一个变量。对战:

$left = '';
$top = '';
$right = '';
$bottom = '1';
$this->setCellPaddings($left, $top, $right, $bottom);

我猜测作者是这样做的,因为变量会在以后再次使用。

答案 1 :(得分:-2)

他们没有命名参数。它们是具有默认值的常规参数(用于从调用中省略它们的时间)。如果省略参数,则必须从右到左。