Php "func_get_args" Fonksiyonu

Kategori : PHP Yazar : alexander Tarih : 19 Mar 2011, Ct 01:24 3 Yorum

Php'de işimizi kolaylaştıran fakat fazla bilinmeyen fonksiyonları başlıklar altında yazarak sizlere tanıtmak istiyorum. Bundan dolayı ileriki yazılarımda php fonksiyonlarını anlatan yazılar bulabileceksiniz. Böylece sizlerin bu fonksiyonlara daha kolay ulaşması için biraz katkım olacağını düşünüyorum.

Fonksiyon tanımlarken bazen gelen parametre sayısı belli olmayabilir. Böyle durumlarda php fonksiyonu olan func_get_args fonksiyonunu kullanabiliriz. Bir fonksiyona gelen parametreleri dizi olarak bize verir. Örnek bir kodla daha iyi anlayalım.

function fonksiyon()
{
    $parametreler = func_get_args();
	
    echo '<pre>';
    print_r($parametreler);
    echo '</pre>';
} 

fonksiyon("parametre 1", "parametre 2", "parametre 3");

Yukarıdaki kodumuzun çıktısı aşağıdaki gibi olacak :

Array
(
    [0] => parametre 1
    [1] => parametre 2
    [2] => parametre 3
)

Yukarıdaki koddan da görüldüğü gibi func_get_args bize fonksiyon parametrelerini indisi sıfırdan başlayacak şekilde birer artarak numaralandırılımış bir dizi dönderir.

Yine bu fonksiyonla beraber kullanabileceğiniz bir diğer fonksiyon  gelen parametrelerin sayısını verir func_num_args ve parametre listesinden bir parametreyi dönderen func_get_arg fonksiyonudur. Yukarıdaki kodumuzu bu fonksiyonların da anlaşılması için genişletelim.

function fonksiyon()
{
    $parametreler = func_get_args();
    $parametre_sayisi = func_num_args();
    $birinci_parametre = func_get_arg(0);

    echo 'Parametre Sayısı = ' . $parametre_sayisi .'<br/>';
    echo 'Birinci Parametre = ' . $birinci_parametre .'<br/><br/>';
    echo '<b>Parametre Listesi : </b><br/>';
    for ($i = 0; $i < $parametre_sayisi; $i++) {
        echo $parametreler[$i] . '<br />';
    }
}

fonksiyon("parametre 1", "parametre 2", "parametre 3");

Kodumuzun son halinin çıktısı aşağıdaki gibi olacak

Parametre Sayısı = 3
Birinci Parametre = parametre 1

Parametre Listesi :
parametre 1
parametre 2
parametre 3

 

Yorumlar >> (3 Yorum)

  1. irfan evrens 3 Kas 2011, Pe 12:10 tarihinde yazılmış.

    esneklik bakımından php’nin güzel bir özelliğini paylaştığınız için teşekkürler, evet çok fazla bilinen bir fonksiyon değildi, bazı durumlarda işe yarayabilir

    • Ergin Keleş 14 May 2012, Pt 20:07 tarihinde yazılmış.

      Yazın için teşekkürler. Kafama bir yer takıldı ve yapamadım. Detaylarını http://www.r10.net/php/1194678-fonksiyonlarin-esnekligi.html adreste görebilirsin sorumun. Ama burada da sana sorayım. Peki fonksiyona gelen parametrelerin içeriğini nasıl alabiliriz? Yani tamam, parametreleri aldık, parametre sayısını aldık. Kaç parametre gelirse gelsin. Ama bu parametrelere sonra nasıl verileri atayacağız? Örnek verirsen sevinirim. r10 üyeliğin varsa orada da cevap verebilirsin. Şimdiden teşekkürler.

      • alexander 15 May 2012, Sa 14:40 tarihinde yazılmış.

        func_get_args fonksiyonu ile gelen parametrelerin isimlerini değil değerlerini alıyorsun. Aşağıdaki şekilde kontrol fonksiyonunu çağırdığında bu fonksiyonun içerisinde $parametreisimleri değerini ekrana print_r fonksiyonu ile yazdırırsan senin gönderdiğin parametrelerin değerlerini yazdırdığını göreceksin.

        $username = 'kullanıcı adı';
        $password = 'parola';
        $repassword = 'parola tekrarı';
        $email  = 'email';
        
        /*
        aşağıdaki satırı çağırdığında ekrana vereceği çıktı :
        array(
        	'kullanıcı adı',
        	'parola',
        	'parola tekrarı',
        	'email'
        )
         */
        $bosdegerKontrol = new bos_deger; 
        $bosdegerKontrol2 = $bosdegerKontrol->kontrol($username,$password,$repassword,$email);
        
        class bos_deger{ 
            function kontrol(){ 
                $parametreSayisi = func_num_args(); 
                $parametreisimleri = func_get_args(); 
        		echo '<pre>';
        		print_r($parametreisimleri);
        		echo '</pre>';
                // Burada takıldım!!!!!!! 
                for($i=0;$i<$parametreSayisi;$i++){ 
                    func_get_args($i); 
                } 
            } 
        }  
        

        Bence fonksiyonun kullanımını tam olarak anlayamadığın için biraz karıştırmışsın olayı.
        Verileri ekrana yazdırarak daha iyi test edebilirsin.

    Yorum Yap

    Yeni yorum yapıldığında bana bildir.

    Yorum Yazarken

    Basit Html etiketlerini kullanabilirsiniz.

    Kodlarınızı <pre></pre> etiketleri arasına yazınız.