繁体   English   中英

为什么命名参数似乎在PHP中起作用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM