Plazma sayı 4, sayfa 77

Bu sayfadaki yazılar

Sayfanın metni

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>

Klavyeyle gezinmek için ← ve → tuşları.