Değişken işlevler

PHP değişken işlev kavramını desteklemektedir. Yani, bir değişken isminin sonuna parantez eklenmişse, PHP aynı isimde bir işlev olup olmadığına bakar ve bulduğu takdirde bu işlevi çalıştırmaya çalışır. Başka olası işlemlerin yanında, bu özellik geri çağırımların, işlev tablolarının ve benzerlerinin gerçeklenmesinde kullanılabilir.

Değişken işlevler, echo, print, unset(), isset(), empty(), include, require ve benzeri dil yapılarında çalışmayacaktır. Bu yapıları değişken işlev olarak kullanmak istediğiniz takdirde, gerekli sarmalayıcı işlevleri kendiniz yazmalısınız.

Örnek 1 - Değişken işlev örneği

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

function 
bar($arg '')
{
    echo 
"In bar(); argument was '$arg'.<br />\n";
}

// Bu echo için sarmalayıcı işlevdir
function echoit($string)
{
    echo 
$string;
}

$func 'foo';
$func();        // foo() çağrılır

$func 'bar';
$func('test');  // bar() çağrılır

$func 'echoit';
$func('test');  // echoit() çağrılır
?>

Değişken işlev özelliğini kullanarak bir nesnenin bir yöntemini de çağırabilmeniz mümkündür.

Örnek 2 - Değişken yöntem örneği

<?php
class Foo
{
    function 
Variable()
    {
        
$name 'Bar';
        
$this->$name(); // Bu Bar() yöntemini çağıracaktır
    
}

    function 
Bar()
    {
        echo 
"Bu bir Bar";
    }
}

$foo = new Foo();
$funcname "Variable";
$foo->$funcname();  // Bu $foo->Variable() işlevini çağıracaktır

?>

Static türünden yöntemleri çağırırken işlev çağrısı 'static property' işlecinden daha güçlüdür:

Örnek 3 Duruk özellikli yöntem çağrısı örneği

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

echo 
Foo::$variable// Bu 'static property' basar. Bu bağlamda $variable gerekmez.
$variable "Variable";
Foo::$variable();  // Bu bağlamda $variable değişkenini okuyan $foo->Variable() çağrılır.

?>

PHP 5.4.0'dan itibaren bir değişkene saklanmış callable türünde bir işlevi çağırabilirsiniz.

Örnek 4 Karmaşık çağrılar

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

$func = array("Foo""bar");
$func(); // prints "bar"
$func = array(new Foo"baz");
$func(); // prints "baz"
$func "Foo::bar";;
$func(); // PHP 7.0.0 öncesinde "bar" basar ve ölümcül hata üretirdi
?>

Ayrıca bakınız: is_callable(), call_user_func(), değişken değişkenleri ve function_exists().

Sürüm Bilgisi

Sürüm: Açıklama
7.0.0 'SınıfAdı::yöntemAdı' bir değişken ismi olabilir.
5.4.0 Diziler de değişken işlev olabilir.