Variablenfunktionen

PHP unterstützt das Konzept der Variablenfunktionen. Wenn Sie an das Ende einer Variablen Klammern hängen, versucht PHP eine Funktion aufzurufen, deren Name der aktuelle Wert der Variablen ist. Dies kann unter anderem für Callbacks, Funktionstabellen usw. genutzt werden.

Variablenfunktionen funktionieren nicht mit Sprachkonstrukten wie echo, print, unset(), isset(), empty(), include und require. Um diese Konstrukte als Variablenfunktionen benutzen zu können, müssen Sie Ihre eigenen Wrapperfunktionen verwenden.

Beispiel #1 Beispiel für Variablenfunktionen

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

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

// Dies ist eine Wrapperfunktion für echo
function echoit($string)
{
echo
$string;
}

$func = 'foo';
$func(); // Dies ruft foo() auf

$func = 'bar';
$func('test'); // Dies ruft bar() auf

$func = 'echoit';
$func('test'); // Dies ruft echoit() auf
?>

Sie können auch die Methode eines Objektes mittels der Variablenfunktionen aufrufen.

Beispiel #2 Beispiel für eine Variablenmethode

<?php
class Foo
{
function
Variable()
{
$name = 'Bar';
$this->$name(); // Dies ruft die Methode Bar() auf
}

function
Bar()
{
echo
"Das ist Bar";
}
}

$foo = new Foo();
$funcname = "Variable";
$foo->$funcname(); // Dies ruft $foo->Variable() auf

?>

Werden statische Methoden aufgerufen, ist der Funktionsaufruf stärker als der statische Eigenschaftsoperator:

Beispiel #3 Beispiel für Variablenmethoden mit statischen Eigenschaften

<?php
class Foo
{
static
$variable = 'statische Eigenschaft';
static function
Variable()
{
echo
'Method Variable called';
}
}

echo
Foo::$variable; // Dies gibt 'statische Eigenschaft' aus. Es bräuchte

Beispiel #4 Komplexe Callables

<?php
class Foo
{
static function
bar()
{
echo
"bar\n";
}
function
baz()
{
echo
"baz\n";
}
}

$func = array("Foo", "bar");
$func(); // gibt "bar" aus
$func = array(new Foo, "baz");
$func(); // gibt "baz" aus
$func = "Foo::bar";
$func(); // gibt "bar" aus
?>
To Top