Forum und email

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.

Example#1 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.

Example#2 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().