Bu sayfadaki yazılar
Sayfanın metni
Sayfa 76
<?php $a - "15"; // $a string tipi bir degisken // olarak tanimlandi ve degeri #4 öldü
$Şa 1- 5; // $a'nin tipi integer'a // donustu ve degeri 20 oldu
$a —« 1.75; // $Şa'nin tipi £float'a donustu // ve degeri 18.25 oldu $b - 100 * "55"; // $b degiskeni integer // olarak tanimlandi ve // degeri 155 oldu - 100 4* "55 abe"; // $e degi#keni integer // olarak tanimlandi ve // degeri 155 oldu $d - 100 * "abe"; // $d degi#keni integer // olarak tanimlandi ve // degeri 100 oldu ?>
İlk aşamada değişkenlerle ilgili gereken özellikler bunlardır. Konular ilerledikçe değişkenlerin farklı özelliklerini de göreceğiz.
Fonksiyonlar
PHP'de fonksiyon kullanımı diğer dillerle kıyaslandığında oldukça standarttır. Ancak PHP'nin yapısında gelen bazı özel fonksiyonlar sayesinde fonksiyon kullanımı çok güzel bir boyut kazanmıştır. Şimdi basit bir fonksiyon örneğiyle başlayalım.
topla() fonksiyonu
<?php $sayil - 3; $sayi2 - 5
; $toplam - topla($sayil, Ş$sayi2); echo $toplam;
function topla($a, $b) 1
J
?>
return $Şat$b;
Bu programın sonucunda ekrana 8 rakamı yazdırılır. Burada programı ana program ve fonksiyon şeklinde iki parçada incelemek lazım.
Ana program:
1. 3 değeri $sayi1'e atanır. 2. 5 değeri $sayi2'ye atanır. 3. topla fonksiyonundan dönen sonuç $toplam'a atanır.
4. $toplam ekrana yazdırılır.
Fonksiyon:
1. Ana programda verilen $sayi1 ve $sayi2 değişkenlerinin değerleri $a ve $b parametrelerine atanır.
2. $a ve $b'nin değerleri toplanarak sonuç ana programa geri döndürülür.
Burada dikkat edilmesi gereken noktalardan biri PHP'de fonksiyonların önceden tanımlanmadan kullanılabildiğidir. C gibi dillerde kaynak kodlar içerisinde yukarıdan aşağı doğru bir sıralama olması gerekmektedir. Yani "topla()" isimli bir fonksiyon kullanılacak ise, bu fonksiyonun kullanıldığı yerden önce tanımlanmış olmalıdır. Bunun iki yöntemi vardır. Birincisi fonksiyonu kullanıldığı yerden daha önceye yazmak. İkincisi ise fonksiyon prototipi dediğimiz fonksiyonun yalnızca tanımının bulunduğu bölümü yine kullanıldığı yerden önceye, tercihen programın en başlarında bir bölgeye yazmak (bu örnekte "function topla($a, $b)" prototip kabul edilebilir). Fakat daha önce de belirttiğimiz gibi PHP böyle bir şeye ihtiyaç duymaz. Fonksiyonu kodun istediğiniz bölümüne yazabilir ve istediğiniz yerden çağırabilirsiniz.
Fonksiyonların içerisinde kullanılan değişkenler lokal değişkenlerdir. Yani ana programda tanımladığımız değişkenlerin değerleri fonksiyon içerisinde geçersizdir ve aynı değişken ismi fonksiyonun içerisinde kullanılsa da ana programdaki değişkenlerin değerlerini bozmazlar. Örnek:
lokal değişken örneği 1
<?php $sayil $sayi2 5; $toplam - topla(); echo $toplam;
3;
function topla()
)
return $sayilt$sayi2;
Sonuç olarak ekrana hiçbir şey yazdırılmayacaktır. Çünkü $sayi1 ve $sayi2 fonksiyon dışında tanımlanmıştır. Şimdi başka bir örnek ile lokal değişken kullanımını iyice pekiştirelim. Bu örnekte HTML kodlarını da örneğe dahil edelim.
lokal değişken örneği 2
<html> <head> <title>Lokal De#i#ken Örne#i</title> </head> <body> <?php $a - 100; echo "Ana programda a'nin degeri: test(); echo "Ana programda a'nin degeri:
function
(
$a — 25; echo "test() fonksiyonunda a'nin degeri: ".$a. ) ?> </body> </html>
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 77
Bu programın çıktısı şu şekilde olacaktır.
Ana programda a'nın değeri: 100 test() fonksiyonunda a'nın değeri: 25 Ana programda a'nın değeri: 100
Sırasıyla PHP kod satırlarını inceleyecek olursak;
1. $a değişkeni 100 değerini alıyor. 2. değeri 100 olarak ekrana yazdırılıyor. 3. test() fonksiyonu çağırılıyor. 4. Fonksiyon içerisinde $a değişkeni 25'e eşitleniyor. 5. $a'nın değeri 25 olarak ekrana yazdırılıyor.
6. Fonksiyondan ana programa dönüş yapılıyor ve kaldığı yerden program çalışmaya devam ediyor.
7. $a'nın değeri bir kez daha ekrana yazdırılıyor.
İşte burada kritik nokta 7. adım. Bu adımda $a'nın değeri 100 mü olmalı 25 mi? Sonuç belli, 100 oluyor. Peki neden? Çünkü fonksiyon içerisinde yer alan $a ana programdaki $a ile adaş olduğu halde iki farklı değişken olarak işlem görürler.
Şimdi ana programda tanımlanmış değerleri ilk fonksiyon örneğinde yapmış olduğumuz gibi parametre kullanmadan fonksiyonlar içerisinde kullanmanın yolunu göreceğiz. Bunu "global" komutu ile yapıyoruz. Fonksiyon içerisinde global olarak kullanılmak istenen değişkenler başına "global" yazılarak tanımlanıyorlar. Daha sonra bu değişkenler ana programdaki değişkenle aynı değişken olarak kullanılabiliyorlar. Son verdiğimiz örneği bir de bu şekilde inceleyelim.
global komutunun kullanım örneği 1
<html> <head> <title>Global Komutu Kullan#m Örne#i 1</title> </hnead>
<body> <?php $a - 100; echo "Ana programda a'nin degeri: ".$a."<br>"; test(); echo "Ana programda a'nin degeri: ".$a."<br>";
function test() 1 global $a; $a — 25; echo "test ()
fonksiyonunda a'nin degeri:
) ?>. </body> </hntml>
Bu örnekte çıktı şu şekilde olacaktır.
Ana programda a'nın değeri: 100
".Şa.
fonksiyonunda a'nın değeri: 25 Ana programda a'nın değeri: 25
Aslında bir önceki örnekten tek farkı "global $a" satırı. Ancak sonuç olarak fonksiyon çağrıldıktan sonra ana programda ekrana yazılan değer fonksiyonun içerisinde atanan değere dönüştü. Sebebi ise bu defa işlerin şu şekilde yürümüş olması;
1. $a değişkeni 100 değerini alıyor. 2. $a'nın değeri 100 olarak ekrana yazdırılıyor. 3. test() fonksiyonu çağırılıyor.
4. $a değişkeni global olarak tanımlanıyor. Artık $a lokal değil global bir değişken.
5. Global olarak tanımladığımız $a değişkeni 25'e eşitleniyor. 6. $a'nın değeri 25 olarak ekrana yazdırılıyor.
7. Fonksiyondan ana programa dönüş yapılıyor ve kaldığı yerden program çalışmaya devam ediyor.
8. değeri birkez daha ekrana yazdırılıyor.
Bu defa araya fazladan bir adım girmiş oldu. 8. adıma geldiğimizde ise $a'nın değeri fonksiyon içerisinde atanan değere eşit oldu.
Peki "global" komutu bize ne sağlar? Bir fonksiyona parametre olarak verilmeyen ancak program içerisinde global olarak anlam ifade eden değişkenleri fonksiyon içerisinden kullanmamızı sağlar. Henüz veritabanı konusuna gelmemiş olsak da buna verilebilecek en güzel örneklerden biri budur. Veritabanı bağlantısı yaptığımızda bize bağlantı bilgilerinin tutulduğu bir değişken döner (genellikle resource tipinde). Bu değişkeni veritabanı üzerinde işlem yapan tüm fonksiyonlara bir parametre olarak vermek yerine fonksiyonların içerisinde global komutuyla kullanmak çok daha pratiktir.
Şimdi ilk fonksiyon örneğimiz olan "topla()" örneğinin parametresiz olarak, global komutuyla nasıl kullanıldığını görelim.
global komutunun kullanım örneği 2
<html> <head> <title>Global Komutu Kullanim Ornegi 2</title> </head> <body> <?php $sayil $sayi2 $toplam - topla(); echo $toplam;
3; 5
function topla() 1 global $sayil; global $sayi2; return $sayilt$sayi2; ) ?> </body> </html>