En este post te enseñaré cómo llamar a una función o método de PHP a través de su nombre contenido dentro de una cadena
Es decir, tener una cadena con el nombre de la función e invocar la función con ese nombre a partir del objeto o de manera global.
Te enseñaré varios ejemplos: uno para invocar a un método de un objeto y otro para llamar a una función global con distintas técnicas.
Supongamos que tienes un objeto que creaste a partir de una clase en PHP y quieres invocarlo según lo que contenga una cadena. Quedaría así:
<?php
class Mascota
{
public function ladrar()
{
echo "woof";
}
public function comer()
{
echo "yum";
}
}
$m = new Mascota();
$nombreFuncion = "ladrar";
$m->$nombreFuncion();
En este caso estoy indicando el nombre del método en la cadena de la línea 17. Y luego utilizo ->$nombreFuncion()
usando la variable.
También le puedes pasar argumentos si quieres, pero debes saber la cantidad de argumentos a pasar. Si el número de argumentos es variable, mira los siguientes ejemplos.
Puedes invocar a una función global según su nombre. Por ejemplo:
<?php
$funcion = "print_r";
$arreglo = [1, 2, 3];
$funcion($arreglo);
En este caso le asigno a $funcion
el nombre de print_r
, función nativa de PHP. Y después simplemente invoco a $funcion
pasándole el argumento que le pasaría a print_r
.
Existe una función que llama a una función pasándole argumentos a partir de un arreglo. Esto funciona cuando el número de argumentos de la función es variable y tenemos que llenar un arreglo con ellos dependiendo de cada cosa.
Veamos un ejemplo. Para usar printf
por ejemplo con dos argumentos la sintaxis es:
printf("Hola %s", "Luis");
En este caso el primer argumento es el formato y el segundo los argumentos de la función. Usando call_user_func_array
quedaría así:
<?php
call_user_func_array("printf", ["Hola %s", "Luis"]);
El primer argumento es el nombre de la función, y el segundo es un arreglo con todos los argumentos con los que llamaríamos a la función.
Finalmente veamos una alternativa a call_user_func_array
, lo que cambia ahora es que invocamos a una función por su nombre pasando los argumentos como arreglo, pero sin call_user_func_array
.
El ejemplo anterior quedaría así:
<?php
$argumentos = ["Hola %s", "Luis"];
$nombreFuncion = "printf";
$nombreFuncion(...$argumentos);
En este caso desempacamos los argumentos del arreglo (usando ...$arreglo
) y se los pasamos a la función. De este modo el número de argumentos será variable pero ya no necesitamos call_user_func_array
.
Así es como podemos llamar a funciones de PHP a través de una cadena. Aquí te dejo un enlace sobre call_user_func_array y aquí un enlace para leer más sobre PHP.
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.