Variabelfunktioner

PHP stödjer konceptet variabelfunktioner. Med det menas att om ett variabelnamn har parenteser efter sig så kommer PHP att leta efter en funktion med samma namn som variabelns innehåll och försöker, om den hittas, köra den funktionen. Det här kan bland annat användas till att implementera callbacks, funktionstabeller.

Variabelfunktioner kommer inte att fungera med språkkonstruktioner som echo(), print(), unset(), isset(), empty(), include(), require() och liknande. Du måste använda dina egna wrapper-funktioner för att kunna utnyttja dessa konstruktioner som variabelfunktioner.

Exempel 17-12. Exempel på variabelfunktioner

<?php
function foo() {
    echo
"In foo()<br />\n";
}

function
bar($arg = '')
{
    echo
"In bar(); argument was '$arg'.<br />\n";
}

// This is a wrapper function around echo
function echoit($string)
{
    echo
$string;
}

$func = 'foo';
$func();        // This calls foo()

$func = 'bar';
$func('test');  // This calls bar()

$func = 'echoit';
$func('test');  // This calls echoit()
?>

Du kan också anropa objektmetoder genom att använda variabelfunktioner.

Exempel 17-13. Exempel på variabelmetoder

<?php
class Foo
{
    function
Variable()
    {
        
$name = 'Bar';
        
$this->$name(); // This calls the Bar() method
    
}
    
    function
Bar()
    {
        echo
"This is Bar";
    }
}

$foo = new Foo();
$funcname = "Variable";
$foo->$funcname();  // This calls $foo->Variable()

?>

Se också call_user_func(), variable variables och function_exists().