(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.
Çağrılacak işlev.
İş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 debug($var, $val)
{
echo "***DEBUGGING\nVARIABLE: $var\nVALUE:";
if (is_array($val) || is_object($val) || is_resource($val)) {
print_r($val);
} else {
echo "\n$val\n";
}
echo "***\n";
}
$c = new StdClass();
$host = $_SERVER["PHP_SELF"];
call_user_func_array('debug', array("host", $host));
call_user_func_array('debug', array("c", $c));
call_user_func_array('debug', array("_POST", $_POST));
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Ö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.