O PHP suporta funções variáveis. Isto significa que se um nome de variável tem parênteses no final, o PHP procurará uma função que tenha o mesmo nome e tentará executá-la, por exemplo, $variavel()
.
Para saber quando o valor de uma variável representa uma função, utilizar a função
function_exists()
passando como argumento o conteúdo da variável que espera que seja o nome de uma função.Há algumas outras formas de se fazer este teste como por exemplo usar a função
gettype
que retorna o tipo de uma variável ou usar umvar_dump
(só em ambiente de desenvolvimento) para vermos com detalhes o conteúdo de uma variável.
Construtores de linguagem como
echo
,unset()
,isset()
,empty()
,include
,require
não podem ser chamados através de variáveis com nome de funções.$variavel = 'echo'; $variavel('Olá, mundo'); //não funciona
Exemplo 1
function olaMundo() {
echo 'Olá, mundo!'. PHP_EOL;
}
$func = 'olaMundo'; // a variável $func está rececendo a function olaMundo
$func(); // aqui estamos chamando a função variável que retorna Olá, mundo!
Exemplo 2
function olaVida($arg = ' ') // aqui a variável $arg está recedendo uma string vazia como valor padrão.
{
echo "Na função olaVida o argumento foi $arg" . PHP_EOL;
}
$func = 'olaVida'; // a variável $func está rececendo 'olaVida' como string
$func('meu argumento'); // aqui estamos chamando a função variavel e passando uma string como argumento.
Exemplo 3
function exibe($string)
{
echo $string . PHP_EOL;
}
$func = 'exibe'; // a função variável $func está rececendo a function exibe
$func('alguma coisa'); // retorna alguma coisa
Exemplo 4
function soma($a, $b)
{
return $a + $b;
}
function subtrai($a, $b)
{
return $a - $b;
}
$operacao = readline('Informe a operação: ');
//nome da função: soma
$valor1 = readline('Informe um valor: ');
$valor2 = readline('Informe um valor: ');
echo $operacao($valor1, $valor2) . PHP_EOL;
- Começamos o nosso código definindo a
function soma()
e afunction subtrai
e nelas definimos a nossa lógiga. - Em seguida, foi criada uma variável
operacao
que está recebendo uma entrada do usuário. Como no comentário do exemplo, o usuário digitou a string soma (que é o nome da função variável que ele deseja utilizar). - Na próxima linha definimos duas variáveis
$valor1
e$valor2
que também deverão ser informadas pelo usuário. - E por último, estamos imprimindo a saída da função variável que está recebendo
$valor1
e$valor2
como argumentos.