Променливи функции

PHP поддържа концепцията за променливи функции. Това означава, че ако дадена променлива има скоби в края си, PHP ще потърси за функция с име - стойността на променливата, и ще се опита да я изпълни. Освен за друго, това може да бъде използвано и с цел осъществяване на обратни извиквания, функционални таблици и други.

Променливите функции няма да работят с езикови конструкции като echo(), print(), unset(), isset(), empty(), include(), require() и други от този род. Трябва да създадете ваша собствена фукнция като опаковка, за да можете да използвате някоя от тези езикови конструкции като променлива функция.

Пример 17-14. Пример за променлива функция

<?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()
?>

Можете също да извиквате и методи на обекти, посредством синтаксиса за променливи функции.

Пример 17-15. Пример за променлив метод

<?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().