Php Programlama – Php Fonksiyonlar

php-programlama-php-fonksiyonlar-banner

Php programlama bize birçok  php fonksiyonlar sunar. Ancak bazı durumlarda bu php fonksiyonlar yetersiz gelir ya da istediğimiz işlemi yapmak için işimize yaramayabilir. Bu durumlarda kendimize özel fonksiyonlar oluşturmamız gerekir. 

  • Php fonksiyonlar kod yazarken karmaşıklığı ortadan kaldırır.
  • Kod tekrarlarını önleyerek programı kısaltır.
  • Bir hata meydana geldiğinde tüm uygulamayı değil ilgili fonksiyonu kontrol eder ve kısa zamanda hata çözümüne ulaşırsınız.
  • Uygulamamız daha anlaşılabilir ve okunabilir bir hale gelir.

Örneğin wordpress kodlarını incelediğimizde sistem fonksiyonlar üzerine kuruludur ve hemen hemen her şey için fonksiyonlar oluşturulmuştur.

Örnek kullanım:

Basitçe kalıp aşağıdaki gibidir. İlerleyen örneklerde detaylı kullanımlar olacaktır.

<?php 
function fonksiyon_adi ($parametre1, $parametre2, ...){
// yapılacak işlemler
}
?>

Fonksiyonları bir kaç alt başlıkta inceleyeceğiz.

Parametreli ve Parametresiz Php Fonksiyonlar

Fonksiyonlar yukarıdaki kalıp kullanımdaki gibi parametre almaktadır. Ancak bazı durumlarda parametre kullanmamız gerekmez. 

Parametreli  Php Fonksiyonlar

Parametreli php fonksiyonlar dışarıdan değer alan fonksiyonlardır. Dışarıdan gönderilen değerler fonksiyon içerisinde işleme tabi tutulur ve fonksiyonun çağırıldığı yerde sonuç gösterilir.

Burada dikkat edilmesi gereken husus fonksiyon oluştururken belirlediğimiz parametreden az ya da fazla parametre göndermeniz hataya neden olacaktır.

Örnek kullanım:

<?php 
function toplama ($sayi1, $sayi2){
echo $sayi1 + $sayi2;
}

toplama (3, 6); // fonksiyonumuzu çağırıp parametreleri gönderiyoruz.
?>

Yukarıdaki kodlarımızı incelediğimizde iki parametreli bir toplama fonksiyonu oluşturulmuş ve fonksiyon çağırılarak iki parametre gönderilmiştir. Burada önceden de dediğim gibi parametre sayısına dikkat etmemiz önemli. Ayrıca fonksiyon içerisinde yapılacak işleme göre fonksiyonda gönderilen parametrelerin veri türüne de dikkat etmek gerekir.

Parametreli fonksiyonlarda parametrelere varsayılan bir değerde verebiliriz. Eğer kullanıcı o parametre için değer göndermemiş ise belirlediğimiz değer varsayılan olarak alınır.

Örnek kullanım:

<?php 
function carpma ($sayi1, $sayi2, $sayi3 = 5){
echo $sayi1 * $sayi2 * $sayi3;
}

$a = 5;
$b = 2;
carpma($a, $b); 
/* 
Yukarıdaki şekilde değişkenleri fonksiyona gönderebiliriz 
ya da aşağıdaki gibi direk veriyi fonksiyona gönderebiliriz. 
İki kullanımın sonucuda aynıdır.
carpma(5, 2);
*/

?>

Yukarıdaki kodu incelediğimizde üç parametreli bir fonksiyon tanımlanmıştır ancak fonksiyona iki parametre gönderilmiştir. Bu durumda $sayi3 = 5 varsayılan değer olarak ayarladığımız için çarpma işlemi sonucu 50 çıkacaktır.

Parametreli fonksiyonlarda parametrelere varsayılan değer verirken dikkat edilmesi gereken unsur ara parametrelere değer verilmesi hataya neden olacaktır. Yani parametrelere varsayılan değer atarken sağdan sola olacak şekilde atamamız gerekir. Örneği inceleyelim.

Örnek kullanım:

<?php 
// aşağıdaki kullanım hatalıdır.
function toplama1 ($sayi1 = 2, $sayi2, $sayi3){
echo $sayi1 + $sayi2 + $sayi3;
}

// doğru kullanım aşağıdaki gibi olmalıdır.
function toplama2 ($sayi1, $sayi2 = 2, $sayi3 = 5){
echo $sayi1 + $sayi2 + $sayi3;
}

toplama1(5, 8);

toplama2 (5, 8);
?>

Yukarıdaki örnekte bir hatalı ve bir doğru kullanım örnek verdim. Varsayılan değer atarken sağdan sola olacak şekilde olmasının nedeni fonksiyonu çağırdığımızda ve iki parametre gönderdiğimizde toplama1 fonksiyonu hata verecektir.  Toplama2 fonksiyonunda varsayılan değer atamasını sağdan sola olacak şekilde yaptığımız için bir hata vermeyecektir.

Parametresiz Php Fonksiyonlar

Parametresiz fonksiyonlara herhangi bir değer gönderilmez. Değer göndermeden yapmak istediğimiz işlemlerde kullanılır.  

Örnek kullanım:

<?php 
function mesaj(){
echo "hoş geldiniz";
}
mesaj();
?>

Yukarıda basit bir parametresiz fonksiyon tanımladık ve ekrana mesaj yazdırdık. 

Örnek kullanım:

<?php
function tarih(){
echo date("Y-m-d");
}
tarih();
?>

Yukarıdaki örnekte fonksiyon ile ekrana içinde bulunduğumuz günün tarihini yazdırdık.  Yukarıdaki örneklerin hepsinde parametreli ve parametresiz geri değer döndürmeyen fonksiyonlardan örnekler yaptık. Şimdi geri değer döndüren fonksiyonlardan bahsedelim. 

Değer Döndüren Php Fonksiyonlar

Örnek kullanımlarda fonksiyon içinde işlem sonuçlarını hep echo komutu ile yazdırdık. Ancak geri değer döndüren fonksiyonlarda bu işlem farklıdır. Fonksiyonlara her türde veri gönderebildiğimiz gibi her türde veri geri döndürebiliriz.

Örnek kullanım:

<?php 
function topla($sayi1, $sayi2, $sayi3){
return $sayi1 + $sayi2 + $sayi3;
}
$sonuc = topla(3, 2, 4);
echo $sonuc;

/* 
topla(3, 2, 4); önceki örneklerde bu şekilde çağırdığımızda ekrana sonuç yazılıyordu 
ancak fonksiyon içinde ekrana sonuç yazdırmadan sonucu geri döndürdüğümüz için
bu şekilde kullanım bir sonuc vermeyecektir. 
Sonucu değişkene aktararak ya da echo topla(3, 2, 4); şeklinde ekrana yazdırabiliriz.
*/
?>

Fonksiyonlar konusunda biraz karmaşık gelebilecek konu kendi içinde kendini çağıran fonksiyonlardır.

Recursive Php Fonksiyonlar

Bazı durumlarda aynı fonkisiyonu kendi içinde tekrar çağırmak gerekir. Örneğin  bir web sitesini ziyaret ettiğinizde alt alta listelenmiş kategoriler görürsünüz. İşte bu kategoriler fonksiyonun kendi içinde tekrar çağırılması sonucu alt alta basitçe listelenir. Ancak mantığını kavramakta biraz sıkıntı çekebilirsiniz. Bu fonksiyonu faktöriyel hesaplayarak anlatacağım genelde tüm programlama dillerinde döngüler, fonksiyonlar deyince hep faktöriyel hesaplama örnekleri verilir. Yani bu faktöriyelde olmasa ne yapacağız 😀

Tabi ki bu işlemi döngü ile yapmak en mantıklı olanıdır. Ancak fonksiyonun kullanım mantığını göstermek için bu örneği yaptık.

Örnek kullanım:

Recursive fonksiyon ile 5 faktöriyelin sonucunu bulalım.

<?php 
$sonuc = 1;
function faktoriyel($sayi){
global $sonuc;
if($sayi > 1){
$sonuc *= $sayi;
$sayi--;
faktoriyel($sayi);
}
return $sonuc;
}
echo "Faktoriyel = ". faktoriyel(5);
?>

Yukarıdaki kodları incelediğimizde faktoriyel isimli bir fonksiyon tanımladık ve  $sayi değişkenimiz 1’den büyük ise koşul içerisinde tekrar faktoriyel isimli fonksiyonumuzu çağırdık bu işlemi bir döngü gibi düşünebilirsiniz.  $sayi değişkeni 1 olduğunda fonksiyon döngü tamamlanmış olacak ve $sonuc değişkenimiz geri döndürülecek. 

Burada dikkat etmek gereken bir konuda global kullanarak fonksiyon dışındaki $sonuc değişkenini fonksiyon içinde erişilebilir hale getirdik.

Recursive fonksiyonlarda işlemler çok fazla tekrarlanacak ise döngü kullanmak daha mantıklıdır. Çünkü recursive fonksiyonlar işlemler çoğaldıkça sunucu kaynaklarını sömürecektir. Sayfaların geç açılmasına neden olabilir. Ziyaretçiler geç açılan sayfaları sevmez.

Döngüler hakkında detaylı bilgi için  Php Programlama Döngüler konusuna göz atabilirsiniz.

Son olarak pek rastlamadığım fonksiyonlara parametre olarak referans gönderme.

Fonksiyonlara Referans Gönderme

Normalde fonksiyonlara parametre göndeririz. Parametreye gönderilen değişkenin değerini referanslar ile değiştirmek mümkündür. Fonksiyona referans göndermek için & (ampersand) değişken isminden önce yazılır.

Örnek kullanım:

<?php 
function ornek(&$sayi){
$sayi = 5;
}
$sayi = 3;
ornek($sayi);
echo $sayi;
?>

Yukarıdaki kodu incelediğimizde ornek fonksiyona &$sayi referansı gönderilmiş yani fonksiyonu çağırmadan önce $sayi değişkenimize 3 değerini atadık. Fonksiyonu çağırdığımızda ise $sayi değişkenimiz fonksiyon içindeki $sayi değişkenini referans aldı, değeri fonksiyonu çağırmadan önce 3 olan $sayi değişkeni fonksiyon çalıştıktan sonra 5 değerine sahip oldu. Eğer & ampersand kullanmasaydık değerlerde herhangi bir değişme olamayacaktı ve ekrana en son tanımlı olan değer 3’ü yazacaktı. 

Fonksiyonlar hakkında yazacaklarım bu kadar ilerleyen konularda daha karmaşık örneklerle karşılaşacaksınız.

 

Bir cevap yazın

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