我最近在PHP中发现了一些似乎使用命名参数的代码,并且感到很惊讶。
$this->setCellPaddings ($left = '', $top = '', $right = '', $bottom = '1');
不幸的是,快速测试证实了我的恐惧:只有订单才有意义。如果我删除前三个参数,并且只传入$bottom
,我会期望一切仍然有效,但是这完全基于位置解释,因此左侧填充由此函数设置,并且不是底部填充物。
$this->setCellPaddings ($bottom = '1');
有点谷歌搜索确认named parameters for PHP are still just an RFC。
所以:为什么这个有效?为什么PHP允许您将赋值插入到期望值的位置?
答案 0 :(得分:2)
这是有效的,因为赋值是返回值的表达式:
$a = $b = '1';
var_dump($a);
输出:
string(1) "1"
即,代码似乎传递了一个值并同时为它设置了一个变量。对战:
$left = '';
$top = '';
$right = '';
$bottom = '1';
$this->setCellPaddings($left, $top, $right, $bottom);
我猜测作者是这样做的,因为变量会在以后再次使用。
答案 1 :(得分:-2)
他们没有命名参数。它们是具有默认值的常规参数(用于从调用中省略它们的时间)。如果省略参数,则必须从右到左。