Como se ha mencionado , a partir de PHP 5.6+ puede (debería) usar el ...
token (también conocido como "operador splat", parte de la funcionalidad de funciones variadas ) para llamar fácilmente a una función con una variedad de argumentos:
<?php
function variadic($arg1, $arg2)
{
// Do stuff
echo $arg1.' '.$arg2;
}
$array = ['Hello', 'World'];
// 'Splat' the $array in the function call
variadic(...$array);
// 'Hello World'
Nota: los elementos de la matriz se asignan a argumentos por su posición en la matriz, no por sus claves.
Según el comentario de CarlosCarucce , esta forma de desempaquetar argumentos es el método más rápido con diferencia en todos los casos. En algunas comparaciones, es más de 5 veces más rápido que call_user_func_array
.
Aparte
Porque creo que esto es realmente útil (aunque no está directamente relacionado con la pregunta): puede insinuar el parámetro del operador splat en la definición de su función para asegurarse de que todos los valores pasados coincidan con un tipo específico.
(Solo recuerde que hacer esto DEBE ser el último parámetro que defina y que agrupa todos los parámetros pasados a la función en la matriz).
Esto es excelente para asegurarse de que una matriz contenga elementos de un tipo específico:
<?php
// Define the function...
function variadic($var, SomeClass ...$items)
{
// $items will be an array of objects of type `SomeClass`
}
// Then you can call...
variadic('Hello', new SomeClass, new SomeClass);
// or even splat both ways
$items = [
new SomeClass,
new SomeClass,
];
variadic('Hello', ...$items);