PHP soporta el concepto de funciones variables. Esto significa que si un nombre de variable tiene paréntesis anexos a él, PHP buscará una función con el mismo nombre que lo evaluado por la variable, e intentará ejecutarla. Entre otras cosas, esto se puede usar para implementar llamadas de retorno, tablas de funciones, y así sucesivamente.
Las funciones variables no funcionarán con constructores de lenguaje como echo, print, unset(), isset(), empty(), include, require y similares. Utilice funciones de envoltura para hacer uso de cualquiera de estos constructores como funciones variables.
Ejemplo #1 Ejemplo de función variable
<?php
function foo() {
    echo "En foo()<br />\n";
}
function bar($arg = '')
{
    echo "En bar(); el argumento era '$arg'.<br />\n";
}
// Esta es una función de envoltura alrededor de echo
function hacerecho($cadena)
{
    echo $cadena;
}
$func = 'foo';
$func();        // Esto llama a foo()
$func = 'bar';
$func('prueba');  // Esto llama a bar()
$func = 'hacerecho';
$func('prueba');  // Esto llama a hacerecho()
?>
Los métodos de objetos también puede ser llamados con la sintaxis de funciones variables.
Ejemplo #2 Ejemplo de método variable
<?php
class Foo
{
    function Variable()
    {
        $nombre = 'Bar';
        $this->$nombre(); // Esto llama al método Bar()
    }
    function Bar()
    {
        echo "Esto es Bar";
    }
}
$foo = new Foo();
$nombrefunc = "Variable";
$foo->$nombrefunc();  // Esto llama a $foo->Variable()
?>
Cuando se llaman a métodos estáticos, la llamada a la función es más fuerte que el operador de propiedad static:
Ejemplo #3 Ejemplo de método variable con propiedades estáticas
<?php
class Foo
{
    static $variable = 'propiedad estática';
    static function Variable()
    {
        echo 'Método Variable llamado';
    }
}
echo Foo::$variable; // Esto imprime 'propiedad estática'. No necesita una $variable en este ámbito.
$variable = "Variable";
Foo::$variable();  // Esto llama a $foo->Variable() leyendo $variable en este ámbito.
?>
Véase también is_callable(), call_user_func(), variables variables y function_exists().