PHP supports the concept of variable functions. This means that if
a variable name has parentheses appended to it, PHP will look for
a function with the same name as whatever the variable evaluates
to, and will attempt to execute it. Among other things, this can
be used to implement callbacks, function tables, and so forth.
Variable functions won't work with language constructs such
as echo(), print(),
unset(), isset(),
empty(), include(),
require() and the like. Utilize wrapper functions to make
use of any of these constructs as variable functions.
Example #1 Variable function example
<?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() ?>
An object method can also be called with the variable functions syntax.
Example #2 Variable method example
<?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()