magento2 — Что `…` делать в объектах PHP

Ниже приведена функция, которую мы можем найти в основном коде Magento 2.

protected function createObject($type, $args)
{
return new $type(...array_values($args));
}

Эта функция является экземпляром $type (который является строковым параметром) с аргументами $args (который является параметром массива).

То, что я не получаю, это те 3 точки (...). Это правильный синтаксис вообще? Я никогда не находил такой объект экземпляр прежде !!

Я попытался удалить эти точки и попытаться загрузить страницу. Это дает фатальные ошибки. Таким образом, кажется, что эти три точки не случайно попали туда.

Кажется, что этот код не будет работать для php-5.3 или более поздних версий. Так что это что-то новое, что я нигде не мог найти.

-1

Решение

Это списки аргументов переменной длины. Они являются новыми для 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);
?>
2

Другие решения

Это отличный способ использовать массив в качестве параметра функции или списка аргументов.
На самом деле, это замена для func_get_args() функция.
Списки аргументов переменной длины

1

По вопросам рекламы [email protected]