|
Fonksiyonlar'in Ic Ice Yerlestirilmesi (Foksiyonlarin Yuvalanmasi)
Fonksiyonlar'da ayni dongulerde oldugu gibi birbiri icerisine
yerlestirilebilir."If" yapilarini veya donguleri bu sekilde
ic ice yerlestirmek gercekten kullanisli olsa da is fonksiyonlara
gelince durum biraz degisir.
Genel olarak fonksyionlar bu sekilde ic ice yerlestirilerek
kullanilmaz.Cok gerekli olmadikca bu yola gitmekten
kacinin.Bizler size bu bolumde yanlizca bilgi edinmeniz
acisindan aciklamalar yapmakla yetinecegiz.
Bir ornek uzerinde konuyu yakindan inceleyelim,(Tekrar ediyorum
yanlizca akademik bilgi olmasi acisindan anlatilmaktadir.Fonksiyonlar
tek baslarina tanimlandiklari zaman daha verimli olurlar)
function emeklimaasi ($Toplam)
{
function vergi($Geliriniz)
{
return $Geliriniz - (($Geliriniz/100)*20);
}
$VergiyiHesapla = vergi($Toplam);
return vergi ($Toplam) - (($VergiyiHesapla/100)*3);
}
$Toplam = 2500; //Bende emekli maasinin 2500 dolar olmasini
isterdim ama maalessef :)
echo (emeklimaasi($Toplam));
Gordugunuz gibi en son satirda "emeklimaasi" fonksiyonumuzu
cagirdik.Bu fonksiyon icinde bir baska fonksiyon olan "vergi"
fonksiyonu var.
$Toplam = 2500; demekle degiskene 2500 degerini atadim.
Bu degeri "emeklimaasi" fonksiyonuna islemlerde kullanilmasi
icin gonderdim.
Ikinci fonksiyonumuz calismaya basladi ve ,
$VergiyiHesapla = vergi($Toplam);
satiri ile "vergi" fonksiyonun kullanacagi degeri fonksiyona
post ettim.(Sonucta tanimli bir $Geliriniz degeri olmadigi
halde ben "vergi ($Toplam)" demekle artik fonksiyon icinde
kullanilacak $Geliriniz degiskenin degerini belirlemis oldum.$Toplam
degiskenin degeri ne ise $Geliriniz yazan yerlere artik o
deger yerlestirilecek.
Onemli bir konu,
Birde programin sonundaki "echo" komutunu iki defa yazalim
ve size ne oldugunu gosterelim,
function emeklimaasi ($Toplam)
{
function vergi($Geliriniz)
{
return $Geliriniz - (($Geliriniz/100)*20);
}
$VergiyiHesapla = vergi($Toplam);
return vergi ($Toplam) - (($VergiyiHesapla/100)*3);
}
$Toplam = 2500; //Bende emekli maasinin 2500 dolar olmasini
isterdim ama maalessef.
echo (emeklimaasi($Toplam));
echo (emeklimaasi($Toplam)); //<-------Yanlizca bu satiri
kod parcasina ekledim.
Boyle bir sey yaparasaniz,alacaginiz hata mesajini
asagidaki linke tiklayarak gorebilirsiniz.
http://www.turk-php.com/ornekler/vergi1.php
Bu yazinin ilerleyen kisimlarinda neden bunu yapmamiza izin
verilmedigini anlatacagiz.Simdilik size boyle bir sey yapmak
istediginizde yapmaniz gereken islemin ne oldugunu gosterelim.
function emeklimaasi ($Toplam)
{
function vergi($Geliriniz)
{
return $Geliriniz - (($Geliriniz/100)*20);
}
$VergiyiHesapla = vergi($Toplam);
return vergi ($Toplam) - (($VergiyiHesapla/100)*3);
}
$Toplam = 2500; //Bende emekli maasinin 2500 dolar olmasini
isterdim ama maalessef.
echo (emeklimaasi($Toplam));
echo (vergi($Toplam)); //<------Bu satiri ekledim.
boyle bir programin ciktisini asagiaki linki izleyerek gorebilirsiniz.
http://www.turk-php.com/ornekler/vergi2.php
emeklimaasi () fonksiyonunu yanlizca bir kere cagirabiliriz.Eger
bunu gozardi ederseniz fonksyion icin coklu declarations tanimlarsinizki
buda hataya sebep olur.
Evet konunun basinda belirtildigi gibi bu tip yontemlerle
fonksiyonlari ic ice kullanmak kullanisli degildir.
Onun yerine boyle bir ornek icin asagidaki kodlari yazmak
daha uygundur.
function vergi (&$Geliriniz)
{
return $Geliriniz = $Geliriniz - (($Geliriniz/100)*20);
}
function emeklimaasi ($Geliriniz)
{
return $Geliriniz = $Geliriniz - (($Geliriniz/100)*3);
}
$Geliriniz=2500;
echo (vergi($Geliriniz));
echo (emeklimaasi($Geliriniz));
Iste boylece iki tane fonksiyon tanimlamis olduk.daha mantikli
ve goze hoc gorunuyor degilmi.Haa unutmadan dikkat ettiyseniz,
function vergi (&$Geliriniz)
satirinda bir tane "&" isareti kullandim.Nedenini onceki
konularda anlatmistim eger okumadiysaniz simdi geriye donup
bakmanin tam zamani :)
Saygilar,
Serkan Hadi Ceylani
serkan@turk-php.com
|