PHP поддържа концепцията за променливи функции. Това означава, че ако дадена променлива има скоби в края си, PHP ще потърси за функция с име - стойността на променливата и ще се опита да я изпълни. Освен за друго, това може да бъде използвано и с цел осъществяване на обратни извиквания, функционални таблици и други.
Променливите функции няма да работят с езикови конструкции като echo(), print(), unset(), isset(), empty(), include(), require() и други от този род. Използвайте функции-опаковки, за да можете да използвате някоя от тези езикови конструкции като променлива функция.
Example #1 Пример за променлива функция
<?php
function foo() {
echo "Във foo()<br />\n";
}
function bar($arg = '')
{
echo "В bar(); аргументът беше '$arg'.<br />\n";
}
// Това е функция-опаковка на echo
function echoit($string)
{
echo $string;
}
$func = 'foo';
$func(); // Това извиква foo()
$func = 'bar';
$func('test'); // Това извиква bar()
$func = 'echoit';
$func('test'); // Това извиква echoit()
?>
Методите на обекти също могат да бъдат извиквани посредством синтаксиса за променливи функции.
Example #2 Пример за променлив метод
<?php
class Foo
{
function Variable()
{
$name = 'Bar';
$this->$name(); // Това извиква метода Bar()
}
function Bar()
{
echo "Това е Bar";
}
}
$foo = new Foo();
$funcname = "Variable";
$foo->$funcname(); // Това извиква $foo->Variable()
?>
Вж. също call_user_func(), променливи променливи и function_exists().