Uso de 'call_user_func'
Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 5 de 68.
La función call_user_func() proporciona una forma potente de llamar a funciones dinámicamente en PHP. En lugar de llamar a una función directamente por su nombre, puedes almacenar el nombre de la función en una variable de cadena y usar call_user_func() para ejecutarla.
Aquí está la sintaxis básica:
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // Salida: Hello World!
?>Esto resulta especialmente útil cuando necesitas llamar a diferentes funciones basándote en la entrada del usuario o en condiciones. También puedes pasar argumentos a la función incluyéndolos como parámetros adicionales:
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // Salida: 8
?>Esta llamada dinámica a funciones es especialmente valiosa al crear aplicaciones flexibles donde la función específica a ejecutar se determina en tiempo de ejecución, como calculadoras, procesadores de comandos o sistemas de enrutamiento.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Desafío
FácilCrea tres funciones: multiply que tome dos números y devuelva su producto, subtract que tome dos números y devuelva su diferencia, y divide que tome dos números y devuelva su cociente.
Recibirás tres entradas: el nombre de la operación ("multiply", "subtract" o "divide") y dos números. Lee las tres entradas, utiliza call_user_func() para ejecutar la función correspondiente con los dos números e imprime el resultado.
Formato de entrada: Tres líneas - la primera línea contiene el nombre de la operación, la segunda línea contiene el primer número, la tercera línea contiene el segundo número
Resultado esperado: El resultado de la operación
Hoja de referencia
La función call_user_func() le permite llamar a funciones de forma dinámica utilizando una variable de cadena que contiene el nombre de la función:
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // Salida: Hello World!
?>Puede pasar argumentos a la función incluyéndolos como parámetros adicionales:
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // Salida: 8
?>Pruébalo tú mismo
<?php
// Leer la entrada
$operation = trim(fgets(STDIN));
$num1 = floatval(fgets(STDIN));
$num2 = floatval(fgets(STDIN));
// TODO: Crear las tres funciones (multiply, subtract, divide) aquí
// TODO: Usar call_user_func() para ejecutar la función apropiada
// Mostrar el resultado
echo $result;
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Funciones avanzadas
Funciones anónimasClosures y 'use'Funciones de flechaFunciones callbackUso de 'call_user_func'Funciones variablesPaso por referenciaFunciones recursivasResumen: Miscelánea de funciones4Arreglos multidimensionales
Crear un arreglo 2DAcceder a elementos de un arreglo 2DModificar elementos de un arreglo 2DIterar con bucles anidadosArreglos asociativos 2DResumen: Ejercicio de cuadrícula simple2Manipulación avanzada de arrays
Agregar con 'array_push'Eliminar con 'array_pop'Agregar con 'array_unshift'Eliminar con 'array_shift'Fusionar arrays indexadosFusionar arrays asociativosExtraer con 'array_slice'Valores con 'in_array'Claves con 'array_search'Resumen: Ejercicio de Playlist3Ordenar Arrays
Ordenar arrays indexados de forma ascendenteOrdenar arrays indexados de forma descendenteOrdenar arrays asociativos por valorOrdenar arrays asociativos por claveOrdenación por orden naturalOrdenación personalizada con 'usort'Resumen: Ordenar tablas de clasificación