array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'functions.variable-functions.php', 1 => 'Değişken işlevler', ), 'up' => array ( 0 => 'language.functions.php', 1 => 'İşlevler', ), 'prev' => array ( 0 => 'functions.returning-values.php', 1 => 'Dönen değerler', ), 'next' => array ( 0 => 'functions.internal.php', 1 => 'Yerleşik işlevler', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'tr', 'path' => 'language/functions.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
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 Statik ö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.
?>
Ö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(); // "bar" basar
?>