Switch Komutunun
Fonksiyonlar Icinde Kullanilmasi
Bir onceki konuda yaptigimiz ornegi biraz daha gelistirelim
ve sizlere "switch" komutu ile istediginiz bir fonksiyonun
nasil secilebilicegini gosterelim.
Hatirlayacaginiz gibi "switch" komutuyla degisik kosullar
arasindan programin bizim icin bir secim yapmasini sagliyorduk.Gene
ayni mantikla her durum icin bir fonksiyonun calistirlmasini
saglayabiliriz.
Simdi uygulamamizi biraz gelistirelim.
switch ($Sehir)
{
case"Istanbul":
echo (Turk_Lirasi_Hesapla($ParaMiktari));
break;
case "Newyork":
echo (Amerikan_Dolari_Hesapla($ParaMiktari));
break;
case "Paris":
echo (Fransiz_Frangi_Hesapla($ParaMiktari));
break;
default:
echo $ParaMiktari;
break;
}
function Turk_Lirasi_Hesapla ($ParaMiktari)
{
Turk Lirasi olarak hesaplanir ve deger dondurulur
}
function Amerikan_Dolari_Hesapla ($ParaMiktari)
{
Amerikan Dolari olarak hesaplanir ve deger dondurulur
}
function Fransiz_Frangi_Hesapla ($ParaMiktari)
{
Fransiz Frangi olarak hesaplanir ve deger dondurulur
}
HTML'nin HIDDEN kontrolleri ile formdan kullanicinin yaptigi
secimler bu sekilde PHP sayfasina ulasitirilarak "switch"
yapisinin en uygun sekilde kullanimi saglanabilir.Bu konuya
ileriki yazilarimizda deginecegiz.
Degiskenler'e fonksiyonun dondurdugu degeri atamak
Bu islemi bir adimda kolayca gerceklestirebiliriz.Asagidaki
kodu inceleyin,
$HitSayaci = hit_sayisi ();
Burada degiskenimiz gordugunuz gibi $HitSayaci'dir.Bu degisken
icerisinde otomatik olarak fonksiyonun dondurdugu deger saklanir.Ardindan
eger isterseniz "switch" komutunu kullanarak kolayca istediginiz
sartlarin kontrolunu saglayabilrsiniz.Bir ornek vermek istersek,
switch ($HitSayaci)
{
case (HitSayaci<100):
echo "Bu hafta cok fazla hit almadik";
break;
case (HitSayaci<1000):
echo "Bu hafta normal hit aldik";
break;
case (HitSayaci<10000):
echo "Bu hafta cok fazla hit aldik";
break;
}
Yukaridaki kod parcasini biraz aciklamak istersek,
$HitSayaci degiskeni icerisinde hit_sayisi () fonksiyonunun
dondurdugu deger saklanmaktadir.Bu deger "switch" komutu ile
test edilmektedir.mesela fonksiyonumuzdan 150 gibi bir deger
donduruldu ise $HitSayaci = 150; olacaktir."switch" komutu
bu degeri "case" ile verilen durumlarin hangisine uydugu konusunda
test edecektir.Bu durumda ekranda " Bu hafta normal hit aldik"
yazisi gorunecektir.
Degerlerin Fonksyiona Gecirilmesi
Simdiye kadar olan kisimda sizlere fonksiyonlarin "parametreleri"
nasil kullandigini acikladik.Eger bir tek "parametre"
fonksiyona islenmesi icin gonderiliyorsa bu "parametreye"
ozel olarak "argument" adi verilir.Genel olarak "argument"ler
fonksiyona,fonksiyonun cagrilmasi sirasinda gonderilir."Parametreler"
ise fonksiyonun icerisindeki kod govdesinde yer alan degiskenlerdir.Argumentlerin
fonksiyona gecisi icin iki yol vardir.Asagida bu iki yolda
aciklanmaya calisilmistir.
Deger Olarak Gecirilmesi
Bu yol zaten yazi dizisinin basindan beri anlatmaya calistigimiz
yoldur.Ilk bolumde verilen "vergi" ornegini burada yazip aciklamak
istersek,
function vergi($Geliriniz)
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*20);
return $Geliriniz;
}
$Geliriniz = 2500;
echo (vergi($Geliriniz)); // Bu satir 2000 olarak goruntulenir.
echo $Geliriniz; // Bu satir 2500 olarak goruntulenir.
Echo komutu ile goruntulenen degerler birbirinden farkli olacaktir.Ustteki
satirda fonksiyonun "return" komutunu kullanarak dondurdugumuz
degeri echo edilecek,Alttaki satirda ise direkt olarak $Geliriniz
degiskenin sahip oldugu deger goruntulenecektir.
Bu sekilde argument degerini fonksiyona gecirmek "passing
by value" olarak isimlendirilir.
Referans olarak Gecirilmesi
Simdiye kadar olan orneklerde hic gormedigimiz ve "passing
by reference" olarak adlandirilan bu metodu kulllanmak icin
degiskenin onune bir "&" ampersand isareti eklenir.Bu
metodla degiskenin degeri fonksiyon icersinde degistirilir.Yukaridaki
ornegimiz icin bu metodu kullanarak degiskenimizi fonksiyona
gecirelim,
function vergi(&$Geliriniz)
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*20);
return $Geliriniz;
}
$Geliriniz = 2500;
echo (vergi($Geliriniz)); // Bu satir 2000 olarak goruntulenir.
echo $Geliriniz; // Bu satir 2000 olarak goruntulenir.
Ornegi incelediginizde goreceginiz gibi "&" amperasand
isaretini fonksiyona gecirilen degiskenin onune koyduk.Bu
sekilde fonksiyona giren degiskenin dondurdugu deger,daha
sonra fonksiyon disinda kullanildigi zaman da fonksiyonun
dondurdugu degerle ayni oldu.
Yani $Geliriniz degiskeninin asil degeri fonksiyonda islemlerden
sonra degismistir.Artik $Geliriniz degiskeninin degeri 2000
dir.
Parametreler icin default deger belirlenmesi
Fonksiyon icinde kullanilan parametre icin default bir deger
belirleyebilirsiniz.
Ornek vermek istersek,
function vergi($Geliriniz=2500)
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*20);
return $Geliriniz;
}
Bu su anlama gelmektedir.Eger bir degeri fonksiyona saglamazsaniz
ve fonksiyonu bu sekilde default degeri ile calistirmak isterseniz
yanlizca fonksiyonu asagidaki sekilde yazip cagirabilrisiniz.
vergi ();
Fonksiyon artik otmatik olarak 2500 degerine gore calisacaktir.
Bununla beraber eger bir degeri sonradan saglarsaniz o zaman
default degeriniz gozardi edilerek sagladiginiz yeni deger
isleme konulur.
vergi (3000);
Artik 2500 degeri yerine 3000 degeri kullanilacaktir.
Parametreler ile ilgili birkac not
Fonksiyon icinde gerekli butun argument degerlerini veya fonksiyon
icinde kullanilan bir parametreyi vermeden fonksiyonu calistirirsaniz
bu degerler sizin icin "0" olarak kabul edilip isleme devam
edilecektir.
Bu su demek eger fonksiyonda iki degiskeniniz var ve siz bir
tanesini sagliyor digeri icin bir deger yazmiyorsaniz PHP
sizin icin bunu seve seve yapacak ve deger belrilemediginiz
degisken icin "0" degerini atayacaktir.Deger belirlemediginiz
butun parametreler fonksiyona sifir degeri alinarak gecirilecektir.
function vergi($Geliriniz,$VergiYuzdesi)
{
return $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
}
seklinde bir fonksiyon tanimladigimizi kabul edelim.Simdi
bu fonksyiona islenmesi icin degerlerimizi gecirecegiz.(Fonksiyona
isleyeceegi degerleri gonderecegiz)
echo(vergi(3000));
bolye bir komutu PHP su sekilde isleyecektir.
3000 - (3000/100)*0)
Baska bir ornek verelim,
function vergi($Geliriniz=2500,$VergiYuzdesi)
{
return $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
}
icin simdi fonksiyonumuzu 3000 degerini vererek cagiralim,
echo (vergi(3000));
yine ayni sekilde fonksyionumuz calisacak ve deger olarak
3000 degeri fonksiyon icinde 2500 degeri sanki hic yazilmammais
gibi davranilacaktir.
Boyle tanimlanmis bir fonksiyon icin su ifadeyi yazamassiniz,
echo (vergi(,25));
ilk verilen $Geliriniz degeri icin sifir girmeye calsitiiniz.ama
fonksiyon icinde default olarak bu parametre icin bir deger
tanimli (2500)
Iste bunu kesinlikle yapamazsiniz.
Yanliz boyle bir durum icin size kodu su sekilde degistirmenizi
tavsiye edebiliriz.
function vergi($VergiYuzdesi,$Geliriniz=2500)
{
return $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
}
ve simdi fonksiyonu su sekilde cagiralim,
echo (vergi(25));
Her turlu gorus ve onerinizi mail ile bana bildirebilirsiniz.
serkan@turk-php.com
|