`...` 在 PHP 对象实例化中做什么
What `...` Do In An PHP Object Instantiation
下面是我们可以在核心 Magento 2 代码中找到的函数。
protected function createObject($type, $args)
{
return new $type(...array_values($args));
}
此函数正在使用参数 $args
(数组参数)实例化 $type
(字符串参数)。
我没有得到的是那 3 个点 (...
)。这是一个有效的语法吗?我以前从未发现过这样的对象实例化!!
我试图删除那些点并尝试加载页面。它给出了致命错误。这么看来,那三个点不是不小心过来的。
该代码似乎不适用于 php-5.3 或更低版本。所以这是我在任何地方都找不到的新东西。
这是一个variable-length argument lists。他们是 PHP 5.6.x 的新手。此示例来自 PHP 手册:
<?php
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
?>
这是将数组用作函数参数或参数列表的好方法。
实际上,它是 func_get_args()
函数的替代品。
Variable-length argument lists
下面是我们可以在核心 Magento 2 代码中找到的函数。
protected function createObject($type, $args)
{
return new $type(...array_values($args));
}
此函数正在使用参数 $args
(数组参数)实例化 $type
(字符串参数)。
我没有得到的是那 3 个点 (...
)。这是一个有效的语法吗?我以前从未发现过这样的对象实例化!!
我试图删除那些点并尝试加载页面。它给出了致命错误。这么看来,那三个点不是不小心过来的。
该代码似乎不适用于 php-5.3 或更低版本。所以这是我在任何地方都找不到的新东西。
这是一个variable-length argument lists。他们是 PHP 5.6.x 的新手。此示例来自 PHP 手册:
<?php
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
?>
这是将数组用作函数参数或参数列表的好方法。
实际上,它是 func_get_args()
函数的替代品。
Variable-length argument lists