Hoy vamos a ver cómo pasar un número determinado de variables a una función en PHP, para hacer esto, usaremos la función call_user_func_array, la cual nos ayudará a llamar a una función pasando-le un determinado número de variables.
Puede que sea una situación extraña, pero por tal situación, siempre es complicado encontrar una solución, así que aquí os la pongo:
1 2 3 4 5 6 7 8 9 10 11 | <?php function test() { echo "Le hemos pasado un total de: ".func_num_args()." variables a la función test.<br>"; echo "Que son las siguientes: <br>"; var_dump(func_get_args()); } $params = array(23, 'hello world', 'la página de oyagum.com mola'); call_user_func_array('test', $params); |
Aquí lo que hacemos es pasarle a la función test, las variables que tenemos dentro del array $params, de esta forma podremos pasar a la función las variables que nos hagan falta, sin tener que declararlas todas en la declaración de la función.ç
Esto lo que acabará mostrando será lo siguiente:
Le hemos pasado un total de: 3 variables a la función.
Que son las siguientes:
array(3) { [0]=> int(23) [1]=> string(11) "hello world" [2]=> string(29) "la página de oyagum.com mola" }
Con veis es bastante fácil pasarle las variables que necesitemos a la función.
En el caso de que en vez de tenerlo así, lo tenéis con clases, como por ejemplo $foo->bar no hay problema es tan simple como hacer lo siguiente:
1 2 3 | <?php $params = array(23, 'hello world', 'la página de oyagum.com mola'); call_user_func_array(array($foo, "bar"), $params); |
Simplemente a la función call_user_func_array le pasamos como primera variable un array.
Y en el primer valor del array, tendremos la variable de la clase que queremos utilizar, en este caso $foo.
Como segundo valor le vamos a pasar un string, el cual será el nombre del método que queremos ejecutar, el cual en este caso es «bar».
Y entonces esto lo que hace es llamar a $foo->bar() pasando las 3 variables que ya hemos visto antes, tan sencillo como eso.
Espero que os haya servido lo explicado.
Y recordad! No olvidéis comentar! En vuestro código y en el Blog!