(PHP 4, PHP 5, PHP 7)
call_user_func — İlk değiştirgede belirtilen kullanıcı işlevini çağırır
işlev
değiştirgesi ile belirtilen kullanıcı tanımlı
işlevi çağırır.
işlev
Çağırılacak işlev. Ayrıca, bu değiştirgede bir nesne örneğinin sınıf yöntemlerinin, array($sınıfadı, $yöntemadı) biçiminde belirtilmek suretiyle çağrılması da mümkündür.
değiştirge
İşleve sıfır veya daha fazla sayıda değiştirge aktarılabilir.
Bilginize:
call_user_func() işlevi gönderimli değiştirgeleri aktarmaz.
Örnek 1 - call_user_func() örneği ve gönderimler
<?php
error_reporting(E_ALL);
function say(&$sayı)
{
$sayı++;
}
$a = 0;
call_user_func('say', $a);
echo $a."\n";
call_user_func_array('say', array(&$a)); // PHP 5.3 öncesinde bunu kullanın
echo $a."\n";
?>Yukarıdaki örneğin çıktısı:
0 1
Hata oluşmamışsa işlevin sonucunu aksi takdirde FALSE
döndürür.
Örnek 2 - call_user_func() örneği
<?php
function berber($tür)
{
echo "Demek $tür kesimi istiyorsunuz, sorun yok.\n";
}
call_user_func('berber', "saç");
call_user_func('berber', "sakal");
?>
Yukarıdaki örneğin çıktısı:
Demek saç kesimi istiyorsunuz, sorun yok. Demek sakal kesimi istiyorsunuz, sorun yok.
Örnek 3 - İsim alanı ismi kullanarak call_user_func()
<?php
namespace Mesela;
class Misal {
static public function dnm() {
print "Merhaba Dünyalı!\n";
}
}
// PHP 5.3.0 ve sonrası
call_user_func(__NAMESPACE__ .'\Misal\dnm');
// PHP 5.3.0 ve sonrası
call_user_func(array(__NAMESPACE__ .'\Misal', 'dnm'));
?>
Yukarıdaki örneğin çıktısı:
Merhaba Dünyalı! Merhaba Dünyalı!
Örnek 4 - Sınıf yöntemi kullanarak call_user_func()
<?php
class Sınıfım {
static function selam_ver()
{
echo "Merhaba!\n";
}
}
$sınıf = "Sınıfım";
call_user_func(array($sınıf, 'selam_ver'));
call_user_func($sınıf .'::selam_ver'); // PHP 5.2.3 ve sonrası
$nesne = new Sınıfım();
call_user_func(array($nesne, 'selam_ver'));
?>
Yukarıdaki örneğin çıktısı:
Merhaba! Merhaba! Merhaba!
Örnek 5 - Lamda işlevi kullanarak call_user_func()
<?php
// PHP 5.3.0 ve sonrası
call_user_func(function($arg) { print "[$arg]\n"; }, 'test');
?>
Yukarıdaki örneğin çıktısı:
[test]