Ниже приведена функция, которую мы можем найти в основном коде Magento 2.
protected function createObject($type, $args)
{
return new $type(...array_values($args));
}
Эта функция является экземпляром $type
(который является строковым параметром) с аргументами $args
(который является параметром массива).
То, что я не получаю, это те 3 точки (...
). Это правильный синтаксис вообще? Я никогда не находил такой объект экземпляр прежде !!
Я попытался удалить эти точки и попытаться загрузить страницу. Это дает фатальные ошибки. Таким образом, кажется, что эти три точки не случайно попали туда.
Кажется, что этот код не будет работать для php-5.3 или более поздних версий. Так что это что-то новое, что я нигде не мог найти.
Это списки аргументов переменной длины. Они являются новыми для 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()
функция.
Списки аргументов переменной длины