Php Fonksiyon Nedir?
Php fonksiyonlarını hazır Php fonksiyonları (built-in function) ve kullanıcı tanımlı fonksiyonlar (user-defined functions) olarak ikiye ayırabiliriz.
Php fonksiyonu tanımlayarak bir kod bloğunu istediğimiz yerde çağırıp çalıştırabiliriz.
Örneğin dışarıdan gönderilen 2 sayıyı toplayıp geri gönderen bir php fonksiyonu.
<?php function topla(int $a, int $b) { return $a + $b; } echo topla(10,20); ?>
Php Fonksiyon Tanımlama
Php fonksiyonlarını function komutuyla tanımlarız.
function fonksiyon_adi() { // php kodları }
Fonksiyon ismi harf ya da "_" alt tire işaretiyle başlayabilir. Boşluk karakteri içermez.
Fonksiyon kapsamındaki kodlar { } işaretleri arasına gelir.
Fonksiyon içerisindeki kodlar fonksiyon çağrıldığında çalıştırılır.
Örnek:
function selamlama() { for($i=0; $i < 5; $i++ ) { echo "Merhaba PHP"."<br>"; } } selamlama() // ekrana 5 kere yazar. selamlama() // ekrana 5 kere yazar.
selamlama() fonksiyonu ekrana 5 kere "Merhaba PHP" yazar ancak fonksiyonun çağrılması lazım. Fonksiyon 2 kere çağrıldığından dolayı 2 x 5 ekrana 10 kere "Merhaba PHP" yazar.
Örnek:
function toplama() { $a = 40; $b = 30; echo $a + $b; } toplama(); // 70
toplama() fonksiyonu her çağrıldığında tanımlanan $a ve $b değerleri toplanır ekrana 70 yazdırılır. Ancak toplama() fonksiyonunun tek görevi her çağrıldığında ekrana 70 değerini yazması olmamalıdır. Dışarıdan gönderilen sayıları toplayıp yazdırması mantıklı olacaktır.
Parametre Alan Php Fonksiyonları
Değişen değerlerle çalışan dinamik php fonksiyonları tanımlamak için fonksiyona parametre gönderimi yapabiliriz.
Fonksiyonlara gönderdiğimiz değerler tanımlanan parametrelere kopyalanır.
Örnek:
function selamlama($isim) { echo "Merhaba ".$isim."<br>"; } echo selamlama("Ahmet"); // Ahmet echo selamlama("Ali"); // Ali echo selamlama("Ayşe"); // Ayşe
selamlama() fonksiyonu $isim şeklinde bir parametre bekler. Gönderilen her değer bu parametreye kopyalanır ve ekrana yazdırılır. Bu sayede selamlama() fonksiyonunu defalarca farklı isimler için kullanabiliriz.
Örnek:
function toplama($sayi1, $sayi2) { echo $sayi1 + $sayi2; } echo toplama(30, 50); // 80 echo toplama(130, 50); // 180
toplama() fonksiyonu 2 adet parametre bekler. Sırasıyla gönderilen değerler $sayi1 ve $sayi2 parametrelerine kopyalanır ve toplanır.
Değer Döndüren Php Fonksiyonları - Return
Fonksiyon içerisinde hesaplanan bir değeri doğrudan fonksiyon içinde yazdırmak yerine bu değeri fonksiyondan geriye return komutu ile döndürebilirsiniz.
Örnek:
function toplama($sayi1, $sayi2) { return $sayi1 + $sayi2; } $sonuc = toplama(20,30); echo $sonuc; // 50
Fonksiyon içerisinde hesaplanan değeri yazdırmak yerine değeri return ile geriye döndürüyoruz. Aynen değişkenlere değer atar gibi $sonuc değerine toplama() dan gelen değer atanır ve sonrasında ekrana yazdırırız.
Fonksiyon İçinde Fonksiyon Kullanımı
Bir fonksiyon oluşturmaktaki amacımız iş yapan bir fonksiyonu sonradan istenildiği kadar kullanmaktır. Dolayısıyla bir fonksiyona genelde sadece bir görev verilir ve her bir görevi yerine getiren fonksiyonlar iç içe de kullanılmalıdır.
Örnek:
function yasHesapla($dogumYili) { return date("Y") - $dogumYili; } echo yasHesapla(1985); echo yasHesapla(2000); function emekliligeKacYilKaldi($dogumYili, $isim) { $yas = yasHesapla($dogumYili); $kalanSure = 65 - $yas; if($kalanSure > 0) { return "$isim, emekliliğe $kalanSure yıl kaldı"; } else { return "$isim, zaten $kalanSure yıl önce emekli oldunuz"; } } echo emekliligeKacYilKaldi(1950, "Ahmet"); echo emekliligeKacYilKaldi(1980, "Ayşe");
yazHesapla() fonksiyonu kendisine gönderilen $dogumYili parametresine göre yaşı hesaplar.
emekliligeKacYilKaldi() fonksiyonu gönderilen $dogumYili ve $isim bilgisine göre emekliliğe kalan sene bilgisini hesaplar ve ekrana yazdırır. Ancak emekliligeKacYilKaldi() fonksiyonu içerisinde doğum yılına göre sene bilgisini yasHesapla fonksiyonu hesaplar.
Fonksiyonlarda Default Parametre
Php fonksiyonlarının beklediği parametrelere her zaman bir değer göndermek zorunda değiliz. Ancak fonksiyonların çalışmaya devam etmesi için gönderilmeyen parametreler için varsayılan bir değer ataması yapılıyor olmalıdır.
Örnek:
function selamlama($isim="Ziyaretçi", $mesaj="İyi günler") { return "$mesaj $isim"; } $sonuc = selamlama("Ahmet","Merhaba"); // Merhaba Ahmet $sonuc = selamlama("Ahmet"); // İyi günler Ahmet $sonuc = selamlama(); // İyi günler Ziyaretçi