(PHP 4 >= 4.0.4, PHP 5)
call_user_func_array — Değiştirgelerin bir dizi olarak verildiği kullanıcı işlevini çağırır
değiştirge_dizisi
içindeki değiştirgeleri
kullanarak kullanıcının tanımladığı işlev
işlevini çağırır.
işlev
Çağrılacak işlev.
değiştirge_dizisi
İşleve aktarılacak indisli dizi şeklinde değiştirgeler.
Bir hata oluşmamışsa işlevin sonucunu, aksi takdirde FALSE
döndürür.
Örnek 1 - call_user_func_array() örneği
<?php
function foobar($arg, $arg2) {
echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
function bar($arg, $arg2) {
echo __METHOD__, " got $arg and $arg2\n";
}
}
// foobar() işlevini iki değiştirge ile çağıralım
call_user_func_array("foobar", array("one", "two"));
// $foo->bar() yöntemini iki değiştirge ile çağıralım
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
foobar got one and two foo::bar got three and four
Örnek 2 - İsim alanı ismi kullanarak call_user_func_array()
<?php
namespace Mesela;
class Misal {
static public function dnm($isim) {
print "Merhaba {$isim}!\n";
}
}
// PHP 5.3.0 ve sonrası
call_user_func_array(__NAMESPACE__ .'\Misal\dnm', array('Ozan'));
// PHP 5.3.0 ve sonrası
call_user_func_array(array(__NAMESPACE__ .'\Misal', 'dnm'), array('Özgür'));
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Merhaba Ozan! Merhaba Özgür!
Örnek 3 - Lamda işlevi kullanımı
<?php
$işlev = function($dğş1, $dğş2) {
return $dğş1 * $dğş2;
};
var_dump(call_user_func_array($işlev, array(2, 4))); /* PHP 5.3.0 ve sonrası */
?>
Yukarıdaki örneğin çıktısı:
int(8)
Bilginize:
değiştirge_dizisi
içindeki gönderimli değiştirgeler işleve gönderimli aktarılır, diğerleri ise değerleriyle aktarılır. Başka bir deyişle değiştirgenin değeriyle mi yoksa gönderimli olarak mı aktarılacağı işlevin nasıl tanımlandığı ile ilgili değildir.