Funções variáveis
O PHP suporta o conceito de funções variáveis. Isto significa que se um nome de variável tem parênteses no final dela, o PHP procurará uma função com o mesmo nome, qualquer que seja a avaliação da variável, e tentará executá-la. Entre outras coisas, isto pode ser usado para implementar callbacks, tabelas de função e assim por diante.
Funções variáveis não funcionam com construtores de linguagem como echo(), print(), unset(), isset(), empty(), include(), require() e outras assim. Você precisa antes construir uma função interceptadora (wrapper) para utilizar qualquer um desses construtores como funções convencionais.
Example#1 Exemplo de funções variáveis
<?php
function foo() {
echo "Chamou foo()<br>\n";
}
function bar($arg = '')
{
echo "Chamou bar(); com argumento '$arg'.<br />\n";
}
// Essa eh uma funcao wrapper para echo()
function echoit($string)
{
echo $string;
}
$func = 'foo';
$func(); // Chama foo()
$func = 'bar';
$func('test'); // Chama bar()
$func = 'echoit';
$func('test'); // Chama echoit()
?>
Você também pode chamar métodos de objetos utilizando o recurso de funções variáveis.
Example#2 Exemplo de chama de método variável
<?php
class Foo
{
function MetodoVariavel()
{
$name = 'Bar';
$this->$name(); // Isto chama o método Bar()
}
function Bar()
{
echo "Bar foi chamada!";
}
}
$foo = new Foo();
$funcname = "MetodoVariavel";
$foo->$funcname(); // Isto chama $foo->MetodoVariavel()
?>
Veja também call_user_func(), variáveis variáveis e function_exists().