desempaquetar una serie de argumentos en php
-
08-07-2019 - |
Pregunta
Python proporciona el " * " operador para desempaquetar una lista de tuplas y asignarlas a una función como argumentos, así:
args = [3, 6]
range(*args) # call with arguments unpacked from a list
Esto es equivalente a:
range(3, 6)
¿Alguien sabe si hay una manera de lograr esto en PHP? Algunas búsquedas en Google para variaciones de "PHP Unpack" no ha aparecido nada de inmediato ... ¿tal vez se llama algo diferente en PHP?
Solución
Puede usar call_user_func_array ()
para lograr eso:
call_user_func_array (" range " ;, $ args);
para usar su ejemplo.
Otros consejos
En php5.6
el ...
operator ha sido agregado. Al usarlo, puede deshacerse de call_user_func_array ()
para esta alternativa más simple. Por ejemplo, tener una función
function add($a, $b){
return $a + $b;
}
y su matriz $ list = [4, 6];
(después de php5.5 puede declarar matrices de esta manera).
Puede llamar a su función con ...
:
echo add (... $ list);
Debería usar call_user_func_array
call_user_func_array(array(CLASS, METHOD), array(arg1, arg2, ....))
http://www.php.net/call_user_func_array
o use la api de reflexión http://www.php.net/oop5.reflection
En ciertos escenarios, puede considerar usar desempaquetar
, que es posible en php, es una forma similar a python:
list($min, $max) = [3, 6];
range($min, $max);
Así es como llegué a esta respuesta al menos.
Búsqueda de Google: desempaquetado de argumentos PHP