PHP : Fonksiyonlar

Bu yazıda PHP dilindeki fonksiyonlar ile ilgili aşağıdaki başlıkları incelemeye çalışacağım.

  • Fonksiyon kullanma mantığı
  • Fonksiyon tanımlama
  • Fonksiyon çeşitleri
  • Recursive fonksiyonlar
  • Fonksiyon bilgilerini elde etme

Fonksiyon kullanma mantığı

Fonksiyonlar genellikle, sürekli tekrar eden işleri bir rutin haline getirmek için kullanılmaktadır. Programlamada çok önemli bir yer tutar.

Her programlama dilinde olduğu gibi PHP de de programcı kendi fonksiyonlarını yazar. Fakat dile özel tanımlanmış çok sayıda fonksiyon vardır. Neredeyse herşey fonksiyonlar ile yapılmaktadır. En basitinden, ekrana yazdırma komutu olan print bile bir fonksiyondur.

Teorikte fonksiyon kullanmanız şart değildir, fonksiyon kullanmadan da istediğiniz herşeyi yapabilirsiniz. Ama fonksiyon kullanmak, siz de takdir edeceksiniz ki size hız ve zaman kazandıracaktır.

Fonksiyon tanımlama

Aşağıdaki syntax (sözdizim) ile bir fonksiyon tanımlayabilirsiniz.

function isim() {
   // Fonksiyonun içindeki işlemler...
}

En basit fonksiyon prototipi yukarıdaki gibi olmalıdır.

Ekrana “Hell World” yazan bir fonksiyon;

function hello() {
    echo "Hello World !";
}

Fonksiyon prototipleri her zaman bu kadar basit ve sade olmayabilir. Bir fonksiyona parametre gönderebilir veya fonksiyondan değer döndürebilirsiniz.

Fonksiyon çeşitleri

Bir gruplandırma yapmak gerekirse aşağıdaki gibi yapabiliriz.

  • Değer alan fonksiyonlar
  • Değer döndüren fonksiyonlar
  • Değer alan ve değer döndüren fonksiyonlar

Değer Alan Fonksiyonlar

Aşağıdaki fonksiyon 2 parametre alarak toplama işlemi yapar ve ekrana yazar.

function topla($a,$b) {
    $sonuc = $a + $b;
    echo $sonuc;
}
topla(10,40);

Topla fonksiyonu 2 parametre alan bir fonksiyondur, fonksiyona gönderilen ilk değeri (10 değerini) $a değişkeni alır ve fonksiyon içerisinde kullanılır. İkinci değeri ise $b değişkeni tutar. Burada $a ve $b değişkenleri local değişkenler olarak adlandırılırlar. Local değişkenler sadece fonksiyon içinde kullanılabilirler, fonksiyonun dışında geçersiz olacaklardır, fakat fonksiyon dışında kullandığınızda hata mesajı üretilmeyecektir.

Parametre alan fonksiyonlarda alınan parametreye ilk değere atama işlemi de gerçekleştirilebilir.

function topla($a=100,$b=200) { /*...*/ }

Bu durumda eğer fonksiyona değer gönderilmezse, ilk değer olarak atadığımız değerlerle işlem yapılacaktır. Yani fonksiyon topla(); şeklinde çağrılırsa ekrana 300 yazılacaktır.

Değer Döndüren Fonksiyonlar

Bir diğer fonksiyon tipide geriye değer döndüren fonksiyon tipidir. Bu fonksiyonlarda, fonksiyon geriye bir değer döndürdüğünden, geriye dönen değeri alıp kullanmak gerekir.

function topla() {
    $a = 10;
    $b = 40;
    return $a + $b;
}
$sonuc = topla();
echo $sonuc;
?>

Burada geriye dönen değeri $sonuc adlı bir değişkenin içine attık ve sonra bu değişkeni echo komutu ile ekrana yazdırdık. Kısa yoldan ;

echo topla();

Değer Alan ve Değer Döndüren Fonksiyonlar

Parametre alan ve geriye değer döndüren fonksiyonlara faktöriyel alan program üzerinden bakınız.

function faktoriyel($sayi) {
    $sonuc = 1;
    for($i=1; $i<=$sayi; $i++) {
        $sonuc *= $i;
    }
    return $sonuc;
}
echo faktoriyel(4) . "<br/>";
echo faktoriyel(5) . "<br/>";
echo faktoriyel(6);

Recursive fonksiyonlar

Recursive fonksiyonlar, kendilerini çağıran fonksiyonlardır. fonksiyon return kısmında kendini çağırmaktadır. Dolayısıyla bu işlem sonsuza kadar devam edecektir, ta ki siz bir kısıtlama koyana kadar. Faktöriyel programını recursive bir fonksiyon ile şu şekilde yapabilirsiniz;

function faktoriyel($sayi) {
    if($sayi>=1) { return $sayi * faktoriyel($sayi-1); }
    if($sayi<1) { return 1; }
}
echo faktoriyel(4) . "<br/>";
echo faktoriyel(5) . "<br/>";
echo faktoriyel(6);

Bazı durumlarda kodu çok kısaltabilen recursive fonksiyonları daha detaylı incelemek için şuradaki yazıma bakabilirsiniz.

Fonksiyon bilgilerini elde etme

Yazdığınız fonksiyonlara ilişkin bilgileri alabilen bir fonksiyon kümesi PHP de kendiliğinden vardır. Bu kısımda onlardan birkaçına değineceğim.

function_exists fonksiyonu, bir fonksiyonun daha önceden tanımlanıp tanımlanmadığını kontrol eder. Fonksiyonun varlığını test eder. Geriye true veya false değeri döndürür.

if(function_exists(faktoriyel)) {
	echo "Fonksiyon tanımlanmış";
} else {
	echo "Fonksiyon tanımlanmamış";
}

func_get_args fonksiyonu, bir fonksiyona atanan parametrelerin listesini döndürür. Fonksiyonunu içinde kullanmalısınız.

func_get_arg fonksiyonu, istenilen parametreye ulaşmanızı sağlar. Yine fonksiyon içinde kullanmalısınız.

func_num_args fonksiyonu ise bir fonksiyona atanan parametrelerin sayısını döndürür.

Bu 3 fonksiyonla ilgili şu örneğe bakabilirsiniz;

function carpma($a, $b, $c) {
    $parametreler = func_get_args();
    $ikinci_param = func_get_arg(2);
    $param_sayisi = func_num_args();
    return $a*$b*$c;
}
echo "Sonuç : " . carpma(4,5,6);

Görüldüğü gibi bu fonksiyonlar işlem yapılacak fonksiyonun içinde kullanılmalıdır.

Benzer Yazılar

Yorumlar

  • ercan , 10 Nisan 2013 - 17:31:11

    hocam bi sorum olacak ? php fonksiyonlar da 1 ila 10 arasında rastgele üretilen 100 sayıdan en çok hangi sayının kaç defa üretilmiş olduğunu bulan programı için yardımcı olabilirmisiniz? örneğin: en çok 9 sayısı 35 defa üretildi gibi… yardımcı olabilirmisiniz saygılar ..

    Cevapla
    • Cem Demir , 10 Nisan 2013 - 19:56:54

      Aşağıdaki kod işine yarayacaktır. İşin bir kısmını yaptım bir kısmını da sana bıraktım. Elinde sayıların kaç kere üretildiğini tutan bir dizi mevcut. (sayac dizisi)
      Sayac dizisinin 0. elemanı 0 sayısının kaç kere üretildiğini, 1. elemanı 1 sayısının kaç kere üretildiğini … tutmaktadır.
      Senin yapman gereken sayac dizisinin büyükten küçüğe sıralamak.

      < ?php $sayilar = array(); $sayac = array(); for($i=0; $i<100; $i++) { $sayilar[$i] = rand(0,10); echo $sayilar[$i] . " - "; switch($sayilar[$i]) { case 0 : $sayac[0]++; break; case 1 : $sayac[1]++; break; case 2 : $sayac[2]++; break; case 3 : $sayac[3]++; break; case 4 : $sayac[4]++; break; case 5 : $sayac[5]++; break; case 6 : $sayac[6]++; break; case 7 : $sayac[7]++; break; case 8 : $sayac[8]++; break; case 9 : $sayac[9]++; break; case 10 : $sayac[10]++; break; } } for($i=0; $i<10; $i++) { echo "
      ” . $i . ” sayisi ” . $sayac[$i] . ” kere uretildi.”;
      }

      ?>

      Cevapla
  • Civan Demir , 25 Şubat 2014 - 01:27:50

    Hocam biraz da bizim anlayacağımız dilden anlatsaydın keşke (:

    Cevapla
  • Barış Ünal , 19 Haziran 2014 - 22:47:01

    Geriye değer döndüren fonksiyon ile 2 sayıyı çarpan programı nasıl yaparız ne yaptıysam çalıştıramadım

    Cevapla
  • esra kılıç , 16 Temmuz 2014 - 12:41:08

    iki ayrı fonksiyonum var biri bolge seçtiriyo diğeri şehir fakat ilk fonksiyonumdan seçilen bölgeye göre ikinci fonk.daki sehirlerin listelenmesini istiyorum yani hangi bölge seçildiyse o bölgedeki şehirler listlenecek ilk fonksiyonun sonucunu select sorgusu içinde nasıl kullanabilirim acaba

    Cevapla

Yorum Yazın

Su elementleri kullanabilirsiniz : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Arama
RSS
Beni yukari isinla