Usando 'call_user_func'
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 5 de 68.
A função call_user_func() fornece uma maneira poderosa de chamar funções dinamicamente no PHP. Em vez de chamar uma função diretamente pelo seu nome, você pode armazenar o nome da função em uma variável de string e usar call_user_func() para executá-la.
Aqui está a sintaxe básica:
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // Saída: Hello World!
?>Isso se torna especialmente útil quando você precisa chamar funções diferentes com base na entrada do usuário ou em condições. Você também pode passar argumentos para a função incluindo-os como parâmetros adicionais:
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // Saída: 8
?>Essa chamada de função dinâmica é particularmente valiosa ao construir aplicações flexíveis onde a função específica a ser executada é determinada em tempo de execução, como calculadoras, processadores de comandos ou sistemas de roteamento.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Desafio
FácilCrie três funções: multiply que recebe dois números e retorna o produto deles, subtract que recebe dois números e retorna a diferença entre eles, e divide que recebe dois números e retorna o quociente deles.
Você receberá três entradas: o nome da operação ("multiply", "subtract" ou "divide") e dois números. Leia as três entradas, use call_user_func() para executar a função apropriada com os dois números e imprima o resultado.
Formato de entrada: Três linhas - a primeira linha contém o nome da operação, a segunda linha contém o primeiro número, a terceira linha contém o segundo número
Saída esperada: O resultado da operação
Folha de consulta
A função call_user_func() permite que você chame funções dinamicamente usando uma variável de string contendo o nome da função:
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // Saída: Hello World!
?>Você pode passar argumentos para a função incluindo-os como parâmetros adicionais:
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // Saída: 8
?>Experimente você mesmo
<?php
// Ler a entrada
$operation = trim(fgets(STDIN));
$num1 = floatval(fgets(STDIN));
$num2 = floatval(fgets(STDIN));
// TODO: Criar as três funções (multiply, subtract, divide) aqui
// TODO: Usar call_user_func() para executar a função apropriada
// Exibir o resultado
echo $result;
?>Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Funções Avançadas
Funções AnônimasClosures e 'use'Arrow FunctionsFunções de CallbackUsando 'call_user_func'Funções VariáveisPassagem por ReferênciaFunções RecursivasRecapitulação: Mix de Funções4Arrays Multidimensionais
Criando um Array 2DAcessando Elementos de um Array 2DModificando Elementos de um Array 2DIterando com Loops AninhadosArrays Associativos 2DRecapitulação: Exercício de Grade Simples2Manipulações Avançadas de Arrays
Adicionando com 'array_push'Removendo com 'array_pop'Adicionando com 'array_unshift'Removendo com 'array_shift'Mesclando Arrays IndexadosMesclando Arrays AssociativosExtraindo com 'array_slice'Valores com 'in_array'Chaves com 'array_search'Recapitulação: Exercício de Playlist3Ordenação de Arrays
Ordenar Arrays Indexados (Crescente)Ordenar Arrays Indexados (Decrescente)Ordenar Arrays Associativos por ValorOrdenar Arrays Associativos por ChaveOrdenação por Ordem NaturalOrdenação Personalizada com 'usort'Recapitulação: Ordenação de Leaderboard