`...` 在 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