Forum und email

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().