call_user_func_array

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

call_user_func_arrayDeğiştirgelerin bir dizi olarak verildiği kullanıcı işlevini çağırır

Açıklama

call_user_func_array ( callback $işlev , array $değiştirge_dizisi ) : mixed

değiştirge_dizisi içindeki değiştirgeleri kullanarak kullanıcının tanımladığı işlev işlevini çağırır.

Değiştirgeler

işlev

Çağrılacak işlev.

değiştirge_dizisi

İşleve aktarılacak indisli dizi şeklinde değiştirgeler.

Dönen Değerler

Bir hata oluşmamışsa işlevin sonucunu, aksi takdirde FALSE döndürür.

Örnekler

Ö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(24))); /* PHP 5.3.0 ve sonrası */
?>

Yukarıdaki örneğin çıktısı:

int(8)

Notlar

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.

Ayrıca Bakınız