[英]Why do named parameters appear to work in PHP?
我最近在PHP中发现了一些似乎使用命名参数的代码,这很令人惊讶。
$this->setCellPaddings ($left = '', $top = '', $right = '', $bottom = '1');
不幸的是,快速测试证实了我的担心:只有顺序很重要。 如果我删除前三个参数,并且只传递$bottom
,我希望一切都可以正常工作,但是这完全是根据位置来解释的,因此左侧填充由该函数设置,而不是底部填充。
$this->setCellPaddings ($bottom = '1');
有点谷歌搜索证实PHP的命名参数仍然只是RFC 。
那么:为什么这样做有效? 为什么PHP允许您将分配插入期望值的地方?
这是可行的,因为赋值是返回值的表达式:
$a = $b = '1';
var_dump($a);
输出:
string(1) "1"
即,代码似乎正在传递一个值,并同时为其设置一个变量。 与:
$left = '';
$top = '';
$right = '';
$bottom = '1';
$this->setCellPaddings($left, $top, $right, $bottom);
我猜作者是这样做的,因为稍后会再次使用变量。
它们没有命名为参数。 它们是具有默认值的常规参数(用于在调用中将其省略的情况)。 如果省略参数,则必须从右到左。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.