Sayfalar

7. KOD YAZMAK etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
7. KOD YAZMAK etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Kod Yazmak - 1


Bundan 15 yil once bulabileceginiz programlama dilleri ile asagidakine benzer kodlar yazabilirdiniz..

10 PRINT "MERHABA DUNYA"
20 GOTO 10

Yukarida kod parcasi bir sonsuz dongu olusturup ekranada arka arkaya "MERHABA DUNYA" yazisinin goruntulenmesini saglar.

Bu yazimizda size aradan gecen 15 yil icerisinde programlama tekniklerinin nasil degisitigini anlatacagiz.Amacimiz sizi "yazilim muhendisi" yapmaktan ziyade organize edilmis kodlari yazmaniz icin bu yeni gelisen teknikleri daha iyi kullanmanizdir.

Moduler Yapi(Modularization)

Programi yazmaya baslamadan once hangi gorevlerin tam olarak yerine getirilmesini istediginizi kafanizda canlandirmalisiniz.Ardindan butun bir yapi icerisinden her kucuk gorev icin birer birer kucuk gruplar olusturarak bir butunu "moduler" yapilar seklinde parcalara bolmelisiniz.Zaten modern programlama tekniginde,tum bu moduller ayri ayri hazirlanarak program taamamlandiginda beraberce derlenmektedir.

Eger programinizin bir modulu kendine has ozel bir gorevi yerine getiriyorsa,bu modulu dilediginiz sayida,istediginiz zaman kullanilmak uzere programin icinden cagirabilirsiniz.Moduller programin icerisinde yer alan siyah kutular gibidirler.Hangi degerin girdigi yada sonucunda hangi ciktiyi aldiginiz onemli degildir.Programin modulu verdiginiz gorevi tam olarak yerine getiriyorsa arada gecen islemler programin genel yapisi icerisinde cokda uzerinde durulacak konular degildir.

PHP veya diger programlama dillerinde programin boyle kucuk yapilarina (modullerine) fonksiyon adi verilmektedir.

Fonksiyonlar(Functions)

Fonksyonlar,programci tarafindan yazilan ve belirli bir gorevi yerine getirmesi beklenen kucuk kod parcalaridir.(code sections)

Daha onceki konularda gordugumuz gibi fonksiyonlar verilen gorevi yerine getirmek icin "argument" adi verilen girdilerle calismaktadir.Bu girdilerin sonunda fonksiyonda bir "cikti" (output) meydana gelir.Belki bu "cikti" gene ayni fonksiyon icerisinde bir "girdi" olacaktir.

Fonksiyonlar verilen herhangi bir argument degerini "parametre" adi verilen yeni bir degiskene cevirebilirler.Daha sonra bu olusan yeni degisken gene ayni fonksiyon icerisinde kullanilabilir.

Bizler fonksiyona verdigimiz degerlerin,fonksiyon icerisindeki islemlerden gectikten sonra fonksiyonun cevabi dondurmesini saglayabiliriz.

Fonksiyonlarin Tanimlanmasi ve Cagrilmasi

Bir fonksiyon tanimlamak icin bir isim vermeniz gereklidir.Bunu yapmak icin,"function" komutunun arkasindan fonksiyona vermek istediginiz ismi yazmalisiniz.Parametre isimleri fonksiyon ismini yazdiktan sonra,parentezler icerisinde yazilmalidir.Fonksiyonun govdesini olusturan kod parcasi iste bu islemler yapildiktan sonra yazilmaya baslanmalidir.Asagida bir sekilsel ornek yer almaktadir,

function fonksiyonunadi (parametreler)
{
fonksiyon icin tanimlanan kod paracasi buraya yazilacak
}

simdi bir orenek yaparak konuyu daha iyi anlayalim.

function vergi ($Geliriniz)
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*20);
return $Geliriniz
}

fonksiyon icerisinde yapilmasini istediginiz islemler icin kac tane satir yazacaginiz konusunda herhangi bir sinirlama yoktur.Burada onemli olan nokta "return" komutunun fonksyionun sonunda yer almasidir.Zira bu komutla fonksiyona calismayi bitirdiginizi ve artik ciktiyi kullanmak istediginizi belirtiyorsunuz.Fonksyion artik "return" komutunun oldugu yerde bitmistir.

Her zaman icin bu sekilde hesaplama yapmaniz gerekmemektedir.ornek olarak HTML kodlarini progrmda kullanmak ve bunlari fonksiyon icerisinde tanimlamak itiyor olabiliriz.

function sayfa_baskisim ($Sayfa)
{
print "<HTML><HEAD><TITLE>Web siteme hos geldiniz " .$Sayfa . "</TITLE></HEAD>";
print "<BODY>";
return;
}

Gordugunuz gibi yukaridaki kod icerisinde "return" komutu fonksyionu sonlandirmak icin kullanilmistir.

Onemli bir nokta eger fonksyionun dondurdugu degeri (yani ciktiyi) goruntulemek isterseniz "echo" komutunu kullanabilirsiniz.Zira "return" ile cikti ekrana gonderilmeyecektir."return" hicbir zaman bir degeri ekranda gostermez,yanlizca fonksiyonun ciktisini (eger varsa) dondurur.

Bir fonksiyon icerisinde yer alan kod grubunu calistirmak bilinen adiyla "fonksiyonu cagirmaktir".PHP icerisinde en basit olarak bir fonksiyonu direkt olarak bir sayi gondererek cagirabilirsiniz.

echo (vergi(1600));

veya daha onceden yaratilmis bir degisken adini kullanarak,

$Geliriniz = 1600;
echo (vergi($Geliriniz));

Biraz daha ayrintili yapmak istersek,

$Geliriniz = 1600;
$VergilendirilmisGeliriniz = vergi($Geliriniz);
echo ($VergilendirilmisGeliriniz);

eger fonksiyona birden fazla parametre saglamak isiyorsaniz,butun parametreleri virgul ile ayrimak zorundasiniz,

function vergi($Geliriniz,$VergiYuzdesi)
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
return $Geliriniz;
}

Arik fonksiyonu duzgun bir sekilde cagirmak icin iki degeri de fonksiyona saglamalisiniz.

echo (vergi(1600,30));

veya iki tane degiskeni,

$Geliriniz = 1600;
$VergiYuzdesi = 30;
echo (vergi($Geliriniz,$VergiYuzdesi);

veya bunlarin karisimi olrk bir tane degisken bir tane sayisal deger,

$VergiYuzdesi = 30;
echo (vergi(1600,$VergiYuzdesi);

veya fonksiyona hic bir deger saglamadan direkt olarak,

function vergi()
{

$Geliriniz = 1600;
$VergiYuzdesi = 30;
$Geliriniz = $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
return $Geliriniz;

}

Simdi aklinizda su soru olabilir.Biz gerekli tanimlamalari nerede hngi sira ile yapacagiz.hemen cevabini verelim,

Eger parametre kullaniyorsak fonksiyonu once veya sonra tanimlamak bir seyi degistirmez,

<?php <-----------------PHP'ye kodlari yazmaya basladigimizi soyluyoruz.

$Geliriniz = 1600; <------------------Calistirma islemi burada basliyor
$VergiYuzdesi = 30;

echo (vergi($Geliriniz,$VergiYuzdesi); <-----Fonksiyonumuzu burada cagirdik

function vergi($Geliriniz,$VergiYuzdesi) <---------Fonksiyonu buarada tanimladik
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
return;
}
?> <------------------PHP ye kodlari yazmayi bitirdigimizi soyluyoruz

fakat biraz daha duzenli kod yazmak veya isi kolaylastirmak istiyorsaniz asagidaki sekilde yazmakdaha mantikli gibi gozukuyor,aslinda aralarinda hicbir fark yok

<?php <-----------------PHP'ye kodlari yazmaya basladigimizi soyluyoruz.

function vergi($Geliriniz,$VergiYuzdesi) <---------Fonksiyonu buarada tanimladik
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
return;
}

$Geliriniz = 1600; <------------------Calistirma islemi burada basliyor
$VergiYuzdesi = 30;

echo (vergi($Geliriniz,$VergiYuzdesi); <-----Fonksiyonumuzu burada cagirdik
?> <------------------PHP ye kodlari yazmayi bitirdigimizi soyluyoruz

Eger yukaridaki programdan son satiri cikarirsaniz fonksyonumuz hic bir zaman kullanilmayacaktir.Tabii ki bir fonksiyonu siz cagirmadan PHP'nin sadece orada oldugu icin calistimrasi da dusunulemezdi.Biz en son satirda,

echo (vergi($Geliriniz,$VergiYuzdesi);

satiri ile fonksiyona ihtiyacimiz oldugunu ve bizim verdigimiz verilerle calismasini soyledik.

Tabii ki fonksiyonu her zaman bu sekilde bir defa calistirmak zorunda degilsiniz.Dilediginiz sayida istediginiz fonksiyonu cagirabilirsiniz,

$Geliriniz = 1600;
$VergiYuzdesi = 30;
echo (vergi(2500,$VergiYuzdesi);
echo (vergi($Geliriniz,30);
echo (vergi(2500,30);
echo (vergi($Geliriniz,$VergiYuzdesi);

seklindede yazabilirdik.

Simdi biraz daha ilginc bir ornek verelim ve nasil oldugunu aciklamaya calisalim,

$Serkan = 1600;
$Esra = 30;

echo (vergi($Serkan,$Esra));

function vergi($Geliriniz,$VergiYuzdesi)
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
return $Geliriniz;
}

Yukarida $Serkan ve $Esra olarak iki degisken tanimlayip fonksiyona bu degiskenleri kullanmasini soyledim.Bu degiskenlerin sakladigi degerler otomatik olarak hesaplamaya baslanirken sirasiyla $Geliriniz ve $VergiYuzdesi degerleri olarak alindi.Guzel degilmi?

Fonksiyonlarin Kullanimi ile Ilgili Kesin Kurallar

# Fonksiyon isimleri programci tarafindan belirlenir
# Fonksiyonlar parametreleri,programci tarafindan belirlenen fonksiyon isminden sonra pazrentezler icerisinde tanimlanir.
# Eger birden fazla parametreniz var is virgul ile ayirmak zorundasiniz.
# Fonkiyoun icindeki kod grubu,fonksiyon ismi ve paremetrelerden tanimlandiktan sonra {} parentezleri arasina yazilmalidir.
# Mutlaka"return" komutu fonksiyon icinde,fonksiyonun islemlerden sonra dondurecegi degeri fonksiyon disinda kullanmak amaciyla yazilmalidir.
# Eger hicbir sonuc dondurulmedi ise "return" komutu yanlizca fonksiyon sonunu belirtmek icin gorev alir.
# Fonksiyonlar ancak cagrildiklari zaman execute edilirler.Cagrilmazlar ise program icinde gorev almazlar.
# Fonksiyonlari programin akisi icinde once veya sonra cagirmaniz bir seyi degistirmez.Yani fonksiyonu once yazip sonra cagirmaniza gerek yoktur.Once cagirip sonrada fonksiyonu tanimlayabilirsiniz.
# Fonksiyonu istediginiz kadar sayida cagirabilirsiniz.

Simdi bir uygulamali ornek yapalim

1.Text editorunuzu acip asagidaki kodlari yazin.

<HTML>
<HEAD></HEAD>
<BODY>
Seres Otelcilik Online Web Sayfasi'na Hosgeldiniz
<FORM METHOD=GET ACTION="tatil3.php">
Tatil icin nereye gitmeyi dusunuyorsunuz?
<BR>
<BR>
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Istanbul">
Istanbul
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Ankara">
Ankara
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Izmir">
Izmir

<BR>
<BR>
Kac yildizli otelde kalmak istiyorsunuz?

<INPUT NAME="Yildiz" TYPE = "Radio" VALUE="Uc">
Uc Yildizli Otel

<INPUT NAME="Yildiz" TYPE = "Radio" VALUE="Dort">
Dort Yildizli Otel

<BR>
<BR>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>

2.Bu dosyayi "tatil3.html" olaraak kayit edin.

3.Yeni bir text dosyaysi acarak asagidaki kodlari yazin.

<HTML>
<HEAD></HEAD>
<BODY>
Seres Otelcilik Online Web SONUC Sayfasi
<BR>
<BR>

<?php

function Hesaplama ($Fiyat,$SehirFaktoru,$YildizFaktoru)
{
return $Fiyat = $Fiyat * $SehirFaktoru * $YildizFaktoru;
}

$fiyat = 500;
$YildizFaktoru = 1;
$SehirFaktoru = 1;
$SehirYildiz = $Sehir . $Yildiz;

switch ($SehirYildiz) {

case "IstanbulUc":
$SehirFaktoru = 2;
break;
case "IstanbulDort":
$SehirFaktoru = 2;
$YildizFaktoru = 2;
break;
case "AnkaraUc":
$SehirFaktoru = 3.5;
break;
case "AnkaraDort":
$SehirFaktoru = 3.5;
$YildizFaktoru = 2;
break;
case "IzmirUc":
break;
case "IzmirDort":
$YildizFaktoru = 2;
break;

default:
$SehirFaktoru = 0;
echo "Geriye donup tekrar deneyiniz";

}

if ($SehirFaktoru <> 0)
{
echo "$Sehir sehrinde 1 haftalik tatil ". "$" . Hesaplama($Fiyat,$SehirFaktoru,$YildizFaktoru);
}

?>
</BODY>
</HTML>

4.Bu dosyayi "tatil3.php" olarak kayit edin.

5."tatil3.html" dosyaysini acip bir kac deneme yapin.

Kod Yazmak - 2


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));

Kod Yazmak - 3


Degiskenlerin Fonksiyonlarla Kullanilmasi

Bu konumuz icerisinde sizlere fonksiyonlarin icinde kullandigimiz degiskenlerin fonksiyonun disinda bize gerekli olup olmadigini belirlememizi saglayacak bazi kurallar gosterecegiz.Bu olaya programcilik literarunde "degiskenin omru" adi verilir.

Bir degisken yaratildigi anda hafizada kucuk bir parca o degiske'nin kullanimi icin ayrilir.Bizler fonksiyonun icinde kullandigimiz degiskenlerin fonksiyon isini bitiridikten sonra yasamalarini istemeyiz.Bu nedenle PHP,fonksiyon calismasini bitirdikten sonra fonksiyonun icindeki degiskenleri "kapatip" omurlerinin "bitmesini" saglar.Fonksiyonun icinde yer alan degiskenler fonksiyon calismasini bittirdikten sonra "oldurulur" "yok edilir".

Fonksiyonun disindan o degiskene yapilacak refeanslar artik "illegal" "invalid" yani "gecersiz"olarak kabul edilir ve hata ile sonuclanir.

Cunku artik o degisken hicbir "degeri" saklamiyordur.

Global ve Yerel Degiskenler

Fonksiyo'nun disinda yaratilan butun degiskenlerin omru "web sayafasinin gosterim suresi" omru ile aynidir.Istemci - Server arasindaki bu iliskide degiskenler sahip olduklri degerleri koruyacaktir.

Degiskenlerle ilgili bu konsepte "scope" adi verilir.Fonksiyonun icinde tanimlanan butun degiskenler bu anlamda "local scope" adini alir.

Omurleri o sayfa ile ilgili butun islemler boyunca sona ermeyen diger degiskenlere ise "global scope" adi verilir.

Bir ornek verelim ve konuyu daha iyi anlayalim,

<?php
$HosgeldinMesaji = "Merhaba Dostum"; <--------------Global Degisken

function Karsilama_Mesajini_Cevir ($HosgeldinMesaji)
{
$HosgeldinMesaji = "Hello my Buddy"; <--------------Local Degisken
return $HosgeldinMesaji;
}

Karsilama_Mesajini_Cevir ();
echo $HosgeldinMesaji;
?>

Ilk satirda degiskenimiz global olarak tanimlanip ona "Merhaba Dostum" degeri veriliyor.Bu kisimda anlasilmayacak bir sey yok.Biz fonksiyon icinde yine bu $HosgeldinMesaji degiskenine "Hello my Buddy" degerini atadik.Sonrada fonksiyonu calismasi icin cagirdik.Unutmayin burada (yani fonksiyonun icinde)$HosgeldinMesaji bir "local degiskendir".Eger bu programi calistirirsaniz,

"Merhaba Dostum" mesajini alirsiniz.Sebebini aciklayalim,

Cunku fonksiyonun icinde yer alan degisken ile bizim programimizin basinda tanimladigimiz degiskenin efekti tamamen farkli olacaktir.Degiken fonksyion icinde localdir.

Bir onemli uyari : Biz fonksiyon'un icinde yanlizca degeri "return" kullanarak dondurduk.Eger fonksiyon icinde "echo" kullansaydik sonuc gene degismeyecek ve sonucta ekranda "Merhaba Dostum" yazisi goruntulenecekti.Cunku "$HosgeldinMesaji" degiskeni global olarak tanimlidir.

Simdi bu sekilde kullanalim ve sonuca bakalim.Hatta bu sefer degisken ismini de degistirelim.

<?php
$HosgeldinMesaji = "Merhaba Dostum";

function Karsilama_Mesajini_Cevir ($IngilizceMesaj)
{
$IngilizceMesaj = "Hello my Buddy";
return $IngilizceMesaj;
}

Karsilama_Mesajini_Cevir ();
echo $HosgeldinMesaji;
echo $IngilizceMesaj;

?>

$IngilizceMesaj degiskeni hic bir deger saklamamaktadir.Bu kisim cok onemlidir ve program yazmanin en temel taslarindan bir tanesidir.

Fonksiyonda "return" kullanarak degikenin degerini dondurdugunuz anda degiskenin "yasama omru" otomatik olarak sona erdirilir .Fonksiyonun icinde dondurulen deger fonksiyonun disinda hic bir deger saklamayacaktir.Kisaca fonksyionun icinde yasayan degisken fonksiyonun disinda tam bir oludur ve ici bostur.

Global Degiskenleri Fonksiyonun Icinde Kullanmak

Yukaridaki aciklamanin birde tersini dusunelim.Biz $HosgeldinMesaji degiskenini fonksiyon icinde "echo" ile gostermek isteseydik sonuc ne olacakti?

<?php
$HosgeldinMesaji = "Merhaba Dostum";

function Karsilama_Mesajini_Cevir ($IngilizceMesaj)
{
echo $HosgeldinMesaji;
$IngilizceMesaj = "Hello my Buddy";
return $IngilizceMesaj;
}

Karsilama_Mesajini_Cevir ();
echo $HosgeldinMesaji;
echo $IngilizceMesaj;
?>

Bu hicbirseyi degisitrmeyecek ve ilk kuralimizda oldugu gibi tersine olarakta $HosgeldinMesaji degiskeni fonksyionun icinde hic bir sey ifade etmeyecektir.Fonksiyonun icinde bu degiskenin degeri yoktur.Bostur.Cunku fonksiyon icinde bu degisken tanimlanmamsitir.

Fonksiyonun disindaki bir degiskeni fonksiyon icinde kullanmak istersek bunun icin iki yol bulunmaktadir.

Birinci Yol asagida gosterilmistir.

<?php
$HosgeldinMesaji = "Merhaba Dostum";

function Karsilama_Mesajini_Cevir ($IngilizceMesaj)
{
global $HosgeldinMesaji;
echo $HosgeldinMesaji;
$IngilizceMesaj = "Hello my Buddy";
return;
}

Karsilama_Mesajini_Cevir ();
echo $HosgeldinMesaji;
?>

yukaridaki kucuk programda $HosgeldinMesaji degiskenini global olarak tanimladik.Daha onceden belirttigimiz gibi eger degiskeni "global" olarak tanimlamadan fonksiyon icinde kullandigimizda hic bir sey ifade etmiyordu.PHP sanki onu hic yazilmamis,tanimlanmamis gibi degerlendirecktir.

Simdi yukarida degiskenimizi "global" olarak tanimladik.Artik programin ciktisi beklenen sekilde "Merhaba Dostum" olacaktir.

Ikinci Yol : PHP bu sekilde global tanimlanan degiskenleri $GLOBALS dizisinde saklamaktadir.

Eger dizi icerisinde saklanan global degiskenlerin degerini ekrana yazmak istersek,

<?php
$HosgeldinMesaji = "Merhaba Dostum";

function Karsilama_Mesajini_Cevir ($IngilizceMesaj)
{
echo $GLOBALS["HosgeldinMesaji"]; <------------------Birinci "Merhaba Dostum"
echo $HosgeldinMesaji;
$IngilizceMesaj = "Hello my Buddy";
return $IngilizceMesaj;
}

Karsilama_Mesajini_Cevir ();
echo $HosgeldinMesaji; <------------------Ikinci "Merhaba Dostum"
echo $IngilizceMesaj; <--------------------Hic bir sey ifade etmiyor.
?>

Yukaridaki son iki ornekte de ekranda iki tane alt alta "Merhaba Dostum" yazisinin ciktigini gorursunuz.Bu yazilardan birincisi fonksiyonun icinde tanimlanan digeride fonksiyonun disinda tanimlanan kod parcasinin ciktilaridir.

Tabii ki $IngilizceMesaj degiskeni hic bir deger gostermeyecektir.Cunku degiskeni fonksiyonun disinda yanlizca "echo" ettik.($IngilizceMesaj degiskeni yanlizca fonksiyonun icinde yasayan disariya cikinca olen bir varlik gibidir.Ama "global" olarak tanimladigimiz $HosgeldinMesaji hem fonksiyon icinde hem fonksiyon disinda yasayabilmektedir)

"global" komutunu kullanmak biraz daha kolay geliyor insanlara.Oysaki $GLOBALS dizisini kullanmakta goruldugu kadar zor degildir.

Degisken ismini "" tirnak isaretlerinin arasina "$" dolar ifadesi olmadan [] koseli parentezlerin icinde yazmaniz yeterlidir.

$GLOBALS ["DegiskenIsmi"];

Bu dizinin kullanimi bir onceki konularda bahsettigimiz "string diziler" konusu ile aynidir.Her turlu dizi islemini "diziler" makalesinde belirttigimiz sekilde yapabilirsiniz.

Eger bir fonksiynu devamli olarak cagiracaksaniz ve fonksiyonun dondurdugu degiskenin degerini hatirlamasini istiyorsaniz ne yapacaksiniz?

Hatilayacaginiz gibi bir fonksioyonun dondurdugu degisken degeri fonksiyon disina "return" ile cikildiginda "olduruluyordu".Bazi durumlar icin bunu istemiyor olabiliriz.

function web_sayfasi_hit_sayaci ()
{
return $Kisi_Sayisi = $Kisi_Sayisi + 1;
}

Fonksiyonun her cagrilimasinda degismeyen degiskenlere "static degiskenler" denilir.Siz yanlizca fonksyionun arka arkaya cagrilma islemleri sirasinda degiskenin tanimli olmasina dikkat etmelisiniz.

function web_sayfasi_hit_sayaci ()
{
static $Kisi_Sayisi = 0;
return $Kisi_Sayisi = $Kisi_Sayisi + 1;
}

Burada bir seyi aciklamak durumundayiz.Gordugunuz gibi ilk satirda "static" komutu ile beraberce $Kisi_Sayisi degiskenine "0" degerini atadim.Fonksiyon ilk cagrildiginda bu "static" komutu degerlendirilecek ve degiskenin degerini israrla saklamak istedigimizi ve PHP'nin onu yok etmemesini sagladik.Bu "static" komutu fonksyion ilk calistiginda kullanilacak fakat daha sonraki fonksiyon cagirmlarinda goz ardi edilecektir.

Eger yukaridaki fonksiyonun ciktisini "echo" etseydik,

echo ( web_sayfasi_hit_sayaci () ); <---1 degerini dondurur.
echo ( web_sayfasi_hit_sayaci () ); <---2 degerini dondurur.
echo ( web_sayfasi_hit_sayaci () ); <---3 degerini dondurur.

Simdiye kadar global,local,ve static degiskenleri inceledik.

# Global degiskenler degerlerini tum programin calismasi boyunca korurular.Eger fonksyionlarin icinde kullanmka isterseniz GLOBALS komutlarini kullanmalisiniz.
# Local degiskenler yanlizca fonksiyonun icinde tanimlidir ve fonksiyonun cagrilmasi sureci boyunca yasarlar.Fonksiyon gorevini bitirince otomatik olarak yok edilirler.
# Static degiskenler degerlerini fonksiyon icinde israrli bir sekilde saklarlar.Fonksiyon her cagrildiginda bu degerler degismez.

Simdi bir uygulama yapalim.

1.Text editorunuzu acin ve asagidakileri yazin.
<HTML>
<HEAD></HEAD>
<BODY>
<BR>
<BR>
<FONT SIZE= -1>

<?php
$GlobalDegisken = "Global";

function local ()
{
$LocalDegisken = "Local";
static $StatikDegisken = 0;
echo "<BR>Global degiskenin degeri". $GLOBALS["GlobalDegisken"];
echo "<BR>Local degiskenin degeri $LocalDegisken ";
echo "<BR>Statik degiskenin degeri $StatikDegisken ";
return $StatikDegisken = $StatikDegisken + 1;
}

echo "Fonksiyonu ilk defa cagirdik...";
local ();

echo "<BR><BR>Fonksiyonun disina cikiyoruz degerlere bakin";
echo "<BR> Global degiskenin degeri $GlobalDegisken";
echo "<BR> Local degiskenin degeri $LocalDegisken";
echo "<BR> Statik degiskenin degeri $StatikDegisken";

echo "<BR><BR>Fonksiyonu ikinci defa cagirdik...";
local ();

echo "<BR><BR>Fonksiyonun disina cikiyoruz degerlere bakin";
echo "<BR> Global degiskenin degeri $GlobalDegisken";
echo "<BR> Local degiskenin degeri $LocalDegisken";
echo "<BR> Statik degiskenin degeri $StatikDegisken";

echo "<BR><BR>Fonksiyonu ucuncu defa cagirdik...";
local ();

echo "<BR><BR>Fonksiyonun disina cikiyoruz degerlere bakin";
echo "<BR> Global degiskenin degeri $GlobalDegisken";
echo "<BR> Local degiskenin degeri $LocalDegisken";
echo "<BR> Statik degiskenin degeri $StatikDegisken";

?>
</FONT>
</BODY>
</HTML>

2.Bu dosyayi "cimbom.php" olarak kayit edin. :))

3."cimbom.php" acin ve sonuclara goz gezdirin.

Program nasil calisiyor?

Ilk satirda her zamanki gibi bir degisken yaratip ona deger atadik.(Degiskenimizi herhangi bir fonksiyon icinde yaratmadik o yuzden degiskenimiz global bir degisken)

$GlobalDegisken = "Global";

Fonksiyonun icinde her zamanki gibi bir degisken yaratip deger atadik.(Dogal olarak fonksiyon icinde yaratilan her degisken local degisken olacaktir.)
$LocalDegisken = "Local";

Fonksiyonun icinde bir "statik" degisken yarattik ve deger atadik.(fonksiyon icinde yarattigimiz bu degiskenin degeri fonksiyon disina cikildiginda,eger fonksiyonu ikinci kez ucuncu kez calistirrisaniz hatirlanacaktir)

static $StatikDegisken = 0;

programmimiz local () satiri ile calismaya basliyor.


Her defasinda fonksiyon cagrildiginda degerleri ekrana yaziyor.

Kod Yazmak - 4


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.

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.

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 :)

Kod Yazmak - 5


Ice Dogru Egilmek veya Fonksiyonun Kendi Kendisini Cagirmasi(Recursion)

Fonksiyon'un kendi kendisini cagirmasi islemi programcilik literaturunde "dikenli bir konu" olarak tanimlanir.Bu cogu zaman programlamayi yeni ogrenen insanlarin basinin donmesine sebep olur.En cok kullanildigi alan matematik islemlerdir ve islem sayisini azaltmak icin oldukca faydalidir.

Sonsuz bir dongu yaratmamak icin,ayni "while" dongulerinde oldugu gibi bir degiskeni devamli test etmelisiniz.Bu degisken verdigimiz sinir sartlarina fonksiyon her calistiginda biraz daha yaklasmali ve asla bu degiskenin degisim sureci kontrol disina cikmamalidir.

Simdi derin bir nefes ve mutfaktan bir kahve alip gelin.Yazinin bundan sonraki kisiminda biraz basinizi dondurecegiz :)

Yapacagimiz islem bir sayinin "faktoryelini" hesaplamak icin ,fonksiyonun kendi kendisini cagiracak sekilde yapilandirip sonuca ulasmak.Bu islem dongulerle de yapilir ama o zamanda size bu konuyu ogretemeyiz :)

Baslayalim,

Faktoryel islemi asagidaki formulle tanimlanir :

n! = n * (n-1) * (n-2) * ........(n-(n-2))*1

Yani eger "10" sayisinin "faktoryelini bulmak isiyorsak yapacagimiz islem,

10! = 10*9*8*7*6*5*4*3*2*1

sayilarini carpmaktir.

Isterseniz ornegimize hemen gecelim ve size uygulamali olarak programi yazip ardindan nasil calistigini anlatayim.

1.Text editorunuzu acin ve asagidakileri yazin.

<HTML>
<HEAD></HEAD>
<BODY>
<FORM METHOD=GET ACTION="faktoryel.php">

Hangi sayinin faktoryelini hesaplamak istiyorsunuz?

<INPUT NAME="Sayi" TYPE="Text">
<BR>
<BR>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>

2.Bu dosyayi "faktoryel.html" olarak kayit edin.

3.Yeni bir text dosyasi acin ve asagidakileri yazin.

<?php
function faktoryel ($Sayi) {
if ($Sayi <= 1)
return 1;
else
return $Sayi* faktoryel ($Sayi-1);
}
echo "Girdiginiz sayi: " . $Sayi . " icin faktoryelimiz" . (faktoryel($Sayi));
?>

4.Bu dosyayi "faktoryel.php" olarak kayit edin.

5."faktoryel.html" dosyaysini acip bir kac deneme yapin.

Program nasil calisiyor?

Bu matematiksel islem cok basit oldugu icin programimiz kisa oldu.Eger daha ayrintili bir ornek yapmak isteseydik tum zamanimizi ve kaynaklarimizi buna ayirmamiz gerekirdi.Bizler burada yanlizca boyle bir konunun varligindan sizi haberdar etmek ve basitce bu yapiyi gostermek icin bu yaziyi yaziyoruz.

Daha profosyonel matematiksel islemler icin sizin kaynkalara goz atmaniz gereklidir.

# Programin baslangicinda "fonksiyonu" tanimlayip, $Sayi ile "argument"in ne olacagini belirledik.

<?php
function faktoryel ($Sayi) {

# Daha sonra kullanicin girdigi sayi degerinin sifir veya 1 olup olmadigina baktik.

if ($Sayi <= 1)
return 1;

# Eger girilen sayidan memnun olduysak program calismaya devam ediyor.

else
return $Sayi* faktoryel ($Sayi-1);

# Diyelimki kullanici web sayfasindan "3" degerini girdi.

3 * faktoryel(2) satiri uygulanacaktir.

Ardindan ,

3 * 2 * faktoryel(1) satiri uygulanacaktir.

Bu islem $Sayi degiskenin degeri "1" oluncaya kadar devam edecektir.Zaten bu noktada fonksiyonun disina cikilip basit bir bilgi mesaji ekrana yazilmaktadir.

Tabii ki boyle bir programi yazip calisir hale getirmek oldukca basittir.Diger matematiksel islemler icin sorunun cozumu her zaman bu kadar basit olmayacaktir.

Bir Dosyayi "Include" Etmek

Fonksiyonlar konusunda anlatacaklarimizi tamamladik.Simdi sira cok onemli baska bir konuyu "include" komutunun kullanimi ve ana amaclarini anlatmaya geldi.

Cok ayrintili olarak aciklayacagimiz bu konuyu iyi ogrenmenizi tavsiye adiyoruz.Zira PHP programciliginin temel taslarindan bir tanesi bu komutun duzgun kullanilmasidir.

"Include" komutu ingilizce "icermek" anlamina gelir.PHP icerisinde kullanim amaci bir dosyayinin icerigini bir baska dosyaya eklemektir.

Text,HTML,Kod ve PHP scriptlerini bir baska dosya icerisine "include" komutunu kullanarak ekleyebilirsiniz.Kullanim formati su sekildedir :

include ("DosyaAdi");

ornek vermek istersek,

include ("test.txt");

Eger "test.txt" dosyasi "Merhaba" kelimesini iceriyorsa, artik bu kelime HTML'nin bir parcasi olarak web sayfasi icinde goruntulenecektir.

Text dosyamizin icerigi asagidaki gibi bir makalede olabilir.

Define problem :

ETI sells cookies, biscuits and crackers throughout Turkey. Company has a big distribution network all of the country. There are a lot of little stores which sell ETI product. They have seven main region and seven region managers. Every region has district managers who has several salesman. Some areas are not convenient for travelling.

Yukaridaki yaziyi kolay olsun diye bir odevimden aldim.Ne yazik ki Turkce bir dosyam yok :)

Sonucta bu yazi yukaridaki "Merhaba" orneginde oldugu gibi "test.txt" dosyasi icerisine yerlestirilirse aynen burada gorundugu sekilde web sayfasinda goruntulenecektir.

"include" komutunu degiskenlerle beraber kullanabilirsiniz.

Ornek vermek istersek,

$DosyaAdi = "1";
include ("test" . $DosyaAdi . ".txt");

sonucta dosya adi "test1.txt" olan text dosyasi web sayfaniz icine eklenmeye calisilacaktir.(Tabii ki boyle bir dosya varsa)

"include" komutunun kullanimina iliskin bazi detaylar

# Text dosyalari web sayfalarina eklenebilir.
# Degiskenler,sabitler,ayrintili hata mesajlari "include" edilecek dosya icerisinde tanimlanabilir.
# HTTP degiskenlerini bu sekilde sayfaniza ekleyebilirsiniz.
# Farkli bir PHP scriptini calistirabilirsiniz.(Execute a seperate PHP script)
# Cok genel kullandiginiz fonksiyonlari,her seferinde yazmak yerine bir dosya icerisine yerlestirip "include" edebilirsiniz.Bu sizi her program sayfasi fonksiyonlari tekrar yazmak derdinden kurtarir.

Uygulamali bir ornek yapalim ve konuyu daha iyi anlayalim,

1.Text editorunuzu acip asagidakileri yazin
"Dosya1 sayfaniza eklendi."

2.Bu dosyayi "dosya1.txt" olarak kayit edin.

3.Yeni bir text dosyasi acip asagidakileri yazin.
"Dosya2 sayfaniza eklendi"

4.Bu dosyayi "dosya2.txt" olarak kayit edin.

5.Yeni bir text dosyaysi acip asagidakileri yazin.

<HTML>
<HEAD></HEAD>
<BODY>
<FORM METHOD=GET ACTION="ekle.php">
Hangi dosyanin sayfaniza eklenmesini istiyorsunuz?
<SELECT NAME="Secim">
<OPTION VALUE="1">Birinci Dosya</OPTION>
<OPTION VALUE="2">Ikinci Dosya</OPTION>

</SELECT>
<BR>
<BR>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>

6.Bu dosyayi "ekle.html" olarak kayit edin.

7.Yeni bir text dosyasi acip asagidakileri yazin.(Merak etmeyin bu son islem)
<HTML>
<HEAD></HEAD>
<BODY>
<?php
if ($Secim<>"") //Secim bos degilse demek bu satir <> isareti esit degil "" isaretleri ise bos anlamindadir.
{
include ("dosya" . $Secim .".txt");
}
?>
<BR>
Iste size ornek birkac yazi bu yazilarda programa ait
</BODY>
</HTML>

8.Bu dosyayi "ekle.php" olarak kayit edin.

9."ekle.html" dosyasini acip bir kac deneme yapin.