PHP – call_user_func_array() Kullanımı

Merhaba, Php 4.0 ile birlikte gelen bir fonksiyon call_user_func_array() fonksiyonu. Bu fonksiyonun işlevi tam olarak şöyle. Adını belirttiğimiz bir fonksiyonu çalıştırarak o fonksiyona parametreler göndermeyi sağlıyor. Parametreleri dizi olarak göndermeye dikkat edin. Gönderilen parametreleri fonksiyon içerisinde çekerken her bir parametre ayrı bir değişken olarak gönderildiği için ayrı birer değişken olarak çekmek gerekir.

Örnek;

<?php
// Çalıştırmak üzere bir fonksiyon tanımlayalım.
function Ad ($Arg1, $Arg2)
{
    return 'Merhaba benim adım '.$Arg1.' ve soyadım '.$Arg2;
}

// Ad isimli fonksiyonu çalıştıralım ve parametre gönderelim.
$Data = call_user_func_array('Ad', ['Akın', 'Yılmaz']);

// Ekran çıktısını ekrana basalım.
echo $Data;

// Ekran çıktısı
// Merhaba benim adım Akın ve soyadım Yılmaz
?>

Çalıştırmaya çalıştığımız fonksiyon bir sınıf içerinde de olabilir. Bu durumda içerdeki fonksiyonun static olarak tanımlanması şartı ile şöyle bir kullanım yapabiliriz.

<?php
// Bir Sınıf tanımlayalım.
class Bilgiler
{
    // Bir Fonksiyon tanımlayalım.
    static function Ad ($Arg1, $Arg2)
    {
         return 'Merhaba benim adım '.$Arg1.' ve soyadım '.$Arg2;
    }
}

// Sınıf içerisindeki fonksiyona parametre gönderelim.
$Data = call_user_func_array(['Bilgiler', 'Ad'], ['Akın', 'Yılmaz']);

// Ekran çıktısını ekrana basalım.
echo $Data;

// Ekran çıktısı
// Merhaba benim adım Akın ve soyadım Yılmaz
?>

Eğer sınıf içerisindeki fonksiyonu static olarak tanımlamak istemiyorsanız sınıfı çağırmanız gerekiyor.

<?php
// Bir Sınıf tanımlayalım.
class Bilgiler
{
    // Bir Fonksiyon tanımlayalım.
    function Ad ($Arg1, $Arg2)
    {
        return 'Merhaba benim adım '.$Arg1.' ve soyadım '.$Arg2;
    }
}

// Sınıf içerisindeki fonksiyona parametre gönderelim.
$Data = call_user_func_array([new Bilgiler , 'Ad'], ['Akın', 'Yılmaz']);

// Ekran çıktısını ekrana basalım.
echo $Data;

// Ekran çıktısı
// Merhaba benim adım Akın ve soyadım Yılmaz
?>

Şunlarda Hoşunuza Gidebilir...

1 Response

  1. 28 Eylül 2017

    […] şuradaki yazımda call_user_func_array() fonksiyonundan bahsetmiştim. Bu yazımda ise ona çok benzer […]

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

%d blogcu bunu beğendi: