Bu dersimizde her programlama dilinde hayat kurtaran fonksiyonları PHP dilinde inceleyeceğiz.
Fonksiyonlar bir program içerisinde birden fazla kez kullanılacak belirli işlemleri tek bir kod blokuyla yerine getirmek üzere yazılmış kod blokları dır. Örneğin bir toplama işlemini programımız içerisinde onlarca kez uygulayacaksak her seferinde aynı işlemi yapmak için aynı kodları yazma ihtiyacı duyarız. Ancak bu toplama işlemi için bir fonksiyon yazarsak işlemleri tekrarlamaktan kurtuluruz.
Fonksiyon tanımlamak için sözdizimimiz şu şekilde olacaktır;
function fonksiyonAdi(){buraya fonksiyon çağrıldığında çalışacak kodlar yazılır}
Oluşturduğumuz fonksiyonu çağırmak için ise fonksiyon adını yazıp parantez açıp kapatılır ve noktalı virgülle satır sonlandırılır: fonksiyonAdi();
Fonksiyonlar 4′ e ayrılır;
Şimdi isterseniz bu fonksiyon tiplerini teker teker inceleyelim;
Parametre almaya geriye değer döndürmeyen fonksiyonlarda, fonksiyon sadece çağrılır ve fonksiyon kendi içerisindeki işlemi yapar, ardından sonlanır. Geriye herhangi bir değer döndürmez. Örneğin bir toplama işlemini yapan fonksiyon yazalım ve fonksiyonu her çağırdığımızda bize 3 ve 2 sayısını toplayıp ekrana yazdırsın;
1 2 3 4 5 |
function topla(){ // "topla" fonksiyonumuzu oluşturduk echo 3+2; // 3 ve 2 sayısını toplayıp ekrana yazdırdık } topla(); // fonksiyonumuzu çağırdık |
Birinci satırda “function” anahtar kelimesi ile bir fonksiyon başlatacağımızı belirttik. Ardından fonksiyon ismimiz olan “topla()” yazdık ve küme parantezi açtık. Bu küme parantezi içerisine ise fonksiyonumuzu çağırdığımızda çalışacak kodları yazdık. Artık her “topla()” yazdığımız yerde fonksiyonumuz 3 ile 2 sayısını toplayıp ekrana (5) yazdıracaktır. Biz bu fonksiyona herhangi bir parametre (değer) göndermedik ve fonksiyon da bize geriye değer döndürmedi.
Şimdi ise 2. fonksiyon tipimiz olan parametre alan, geriye değer döndürmeyen fonksiyonumuza bakalım.
Parametre alan, geriye değer döndürmeye fonksiyonumuzda, fonksiyonu çağırırken bir değer göndererek çağırırız. Fonksiyon bu değerleri alır, kendi içerisinde işleme tabi tutar ancak geriye değer döndürmez.
Bu tipte bir fonksiyonu tanımlarken, fonksiyon isminin parantezleri arasına gönderdiğimiz değeri tutacak değişkenler yazılır: function topla($sayi1, $sayi2){
Fonksiyona kaç adet değer göndereceksek, o kadar değişken tanımlanır.
Örneğin fonksiyona iki adet sayı gönderelim ve fonksiyon bu sayıları toplayıp ekrana yazdırsın;
1 2 3 4 |
function topla($sayi1, $sayi2){ // fonksiyonu tanımla echo $sayi1 + $sayi2; //sayıları topla } topla(7,5); // fonksiyonu çağır |
Yukarıda gördüğünüz üzere fonksiyon tanımlarken fonksiyon adı parantezleri içerisine iki adet değişken tanımladık. Fonksiyon parantezleri içerisinde ise bu iki değişkeni toplayıp ekrana yazdırdık. Dördüncü satırda ise fonksiyonu çağırdık. Yalnız bu kez fonksiyonu çağırırken parantezler içerisine iki adet parametre ekledik. Yani kısaca özetleyecek olursak topla(7,5); kodu ile topla fonksiyonuna iki adet sayı gönderdik. Fonksiyonumuz bu sayılardan ilkini $sayi1 değişkenine, ikincisini ise $sayi2 değişkenine atadı ve küme parantezi içerisine girdi. Küme parantezi içerisindeki kodu çalıştırıp ekrana bu iki sayının (5 ile 7) toplamını (12) yazdırdı. Artık fonksiyonu her çağırdığımızda bu işlem gerçekleşecektir.
Parametre almayan ancak geriye değer döndüren fonksiyonlarda, fonksiyon çağırırken fonksiyona herhangi bir değer gönderilmez ancak geriye değer döndürmesi beklenir. Bir fonksiyonun geriye değer döndürebilmesi için fonksiyon içerisinde yapılan işlemin sonunda return ifadesi kullanılır.
1 2 3 4 5 6 |
function topla(){ // fonksiyonu tanımla $toplam = 3 + 13; //sayıları topla return $toplam; //toplam değişkeni değerini geriye döndür } $sonuc = topla(); // fonksiyonu çağır ve geriye dönen değeri sonuc değişkenine ata echo $sonuc; // sonuc değişkeni değerini ekrana yazdır |
Görüldüğü üzere fonksiyonu çağırırken parametre göndermedik. Fonksiyon kendi içerisindeki işlemi yaptı ve return ifadesi sayesinde işlem sonucunu alıp $sonuc değişkenine atadık. Ardından $sonuc değişkeni değerini ekrana bastırdık.
Bu tip fonksiyonlarda fonksiyon hem parametre alır, hem de geriye değer döndürür.
Örnek olarak topla fonksiyonuna iki sayı gönderelim, fonksiyonumuz bu sayıları toplasın ve sonucu bize geri göndersin. Biz de dönen sonucu $sonuc değişkenine atayalım;
1 2 3 4 5 6 7 |
function topla($sayi1, $sayi2){ // fonksiyonu tanımla $toplam = $sayi1 + $sayi2; // gelen sayıları topla ve toplam değişkenine ata return $toplam; //toplam değişkeni değerini geriye döndür } $sonuc = topla(12,15); // fonksiyona 12 ve 15 değerini gönder // ve geriye dönen değeri sonuc değişkenine ata echo $sonuc; // sonuc değişkeni değerini ekrana yazdır |
Görüldüğü üzere fonksiyona iki adet sayı gönderdik. Fonksiyonumuz bu sayıları aldı, kendi içerisinde toplama işlemine tabi tuttu ve çıkan sonucu return ifadesi ile bize geri gönderdi. Biz de dönen sonucu $sonuc değişkenine atadık ve ardından $sonuc değişkeni değerini ekrana yazdırdık.
Şimdi bir de örnek olarak şöyle bir program yazalım;
Biz fonksiyona bir sayı gönderelim, fonksiyonumuz bu sayının faktoriyelini alsın ve çıkan sonucu bize geri göndersin;
1 2 3 4 5 6 7 8 |
function faktoriyel($sayi){ // fonksiyon değeri alır for($i = $sayi-1; $i > 1; $i--){ // döngüye girer $sayi = $sayi * $i; // her döngüde sayı değerini bir eksiği //ile çarpar ve $sayi değişkenine atar } return $sayi; // dongü bitince sonucu geri döndürür } echo faktoriyel(6); // fonksiyona 6 değerini gönder dönen sonucu ekrana yaz |
Yukarıdaki kodda ne yaptık?
Bilindiği üzere bir sayının faktoriyeli 1’den kendisine kadar olan sayıların çarpımına eşittir. Örnek olarak 6 sayısının faktoriyeli 6*5*4*3*2*1 = 720 yapar.
Biz fonksiyonumuzu tanımlarken, fonksiyon adı parantezi içerisine göndereceğimiz değeri tutacak “$sayi” adında bir değişken tanımladık: faktoriyel($sayi)
Ardından fonksiyon küme parantezi içerisinde bir for döngüsü oluşturduk. Önce $i adında değişken tanımlayıp değişkene gönderdiğimiz $sayi değerinin bir eksiğini atadık: $i = $sayi-1;
Döngümüzün $i değeri 1’den küçük oluncaya kadar dönmesini sağladık: $i > 1;
Her döngüde $i değişkeninin bir sayı düşmesini sağladık: $i–
Döngü parantezi içerisinde, her döngüde $sayi değişkenini $i değişkeniyle çarpıp, çıkan sonucu tekrar $sayi değişkenine atadık: $sayi = $sayi * $i;
Döngümüz sona erince $sayi değişkenini return komutu ile fonksiyonu çağırdığımız yere gönderdik: return $sayi;
Fonksiyona 6 sayısını gönderdik ve yukarıdaki işlemler oluştu: echo faktoriyel(6);
Fonksiyon bize 720 sayısını döndürdü ve bu sayıyı ekrana yazdık.