plazma - amatör bilgisayar kültürü

PHP Kursu - 1

Emir 'Skate' Akaydın

1. Giriş

1997 senesinden beri geliştirilmekte olan PHP dili, 10 yılı aşkın süreçte gün geçtikçe daha popüler ve daha yaygın kullanılan bir dil haline geldi. Özellikle HTML tabanlı web programlamayı hedef alan dilin ASP, CGI, Perl, JSP ve sonrasında ASP.NET dili gibi güçlü rakipleri de oldu (bu rakiplerin bazıları PHP'den daha eskidir). Dilin en büyük avantajlarından biri multi-platform olması yani farklı işletim sistemlerini desteklemesi ve kaynak kodlarının açık gelmesidir.

PHP, büyük ölçüde C, Java ve Perl dillerinin standartlarına uygun olarak geliştirilmiştir. Her ne kadar öncelikli amacı web tabanlı programlamaya yönelikse de, bu dili kullanarak çok daha fazlasını yapmak mümkündür.

Şekil 1.

2. PHP Dili'nden Nasıl Program Yazılır? Nasıl Çalıştırılır?

PHP dili derleme (compile) gerektirmeyen bir dildir. Bir scripting dili yapısında tasarlanmıştır. Bu dilden bir program yazmak için işletim sistemiyle beraber gelen ya da daha gelişmiş bir text editörü yeterli olacaktır. Yazılan programı ise PHP motoruna parametre olarak verdiğimizde PHP motoru bu programı çalıştıracaktır. Ancak genellikle PHP motoru bu şekilde doğrudan kullanılmaz. Web server'a gerekli tanımlar yapıldıktan sonra web server PHP dilinden yazılmış programın olduğu dosyayı PHP motoruna gönderir ve programın çıktısı web browser ekranından görüntülenir.

Örnekler üzerinden durumu açıklayacak olursak; işletim sistemi Windows, web server IIS, web browser Internet Explorer, text editör ise Notepad olduğunu düşünelim (birçok farklı senaryo kurulabilir).

  1. Notepad'i açıp PHP'den programımızı yazıyoruz.

  2. ".php" uzantısıyla web serverımızın ulaşabileceği bir klasöre dosyayı kaydediyoruz (IIS için örnek: C:\inetpub\wwwroot\deneme.php).

  3. Internet Explorer'ı açarak kendi makine ismimiz/IPmiz ya da lokal isim/IP'yi kullanarak adres çubuğundan dosyaya ulaşıyoruz.

  4. Örnek: http://localhost/deneme.php

  5. Program çalıştırılıyor ve sonucu browser ekranında görüyoruz.

3. İlk Program Örnekleri

İlk olarak çok temel seviyede de olsa HTML bilgisine ihtiyaç duyacağız. Bunun için çok basit bir HTML sayfa örneği verelim.

HTML:

<html>
<head>
<title>Sayfa Basligi</title>
</head>
<body>
Sayfa İçeriği
</body>
</html> 

Bu yukarıda gördüğünüz sayfa örneği HTML formatındaki bir sayfa için minimum iskelet yapısı sayılabilir. Şimdi "Sayfa İçeriği" yazan kısımda alt alta 1'den 3'e kadar olan sayıları yazalım. Unutmamamız gereken nokta HTML'de alt satıra geçmek için "<br>" komutunu kullanmamız gerekir.

HTML:

<html>
<head>
<title>Sayfa Basligi</title>
</head>
<body>
1<br>
2<br>
3<br>
</body>
</html> 

Bu sayfanın browserdan göreceğimiz çıktısı alt alta 1, 2, 3 rakamlarıdır. Şimdi 1'den 3'e kadar değil de 1'den 10000'e kadar olan sayıları yazalım. Bu durumda üç yöntemimiz var.

  1. Bu iş için adam tutup para vereceğiz kendisine, tek tek yazacak 1'den 10000'e kadar satırları.

  2. Herhangi bir programlama dilinden istediğimiz HTML çıktısını veren bir program yazacağız.

  3. PHP, JavaScript, VBScript gibi bir scripting diline başvurup işi HTML'in içine bir script bloğu açarak halledeceğiz.

Evet bu işi yapmamızın tek yolu PHP değil. Javascript, VBScript gibi dillerle de bu işi halledebiliriz. Ancak bu diller ile PHP'nin farkına birazdan değineceğiz. Şimdi PHP ile bu işin nasıl yapıldığını görelim.

Şekil 2.

PHP:

<html>
<head>
<title>Sayfa Basligi</title>
</head>
<body>
<?php
for($i=1;$i<=10000;$i++)
    echo $i."<br>";
?> 
</body>
</html> 

Böylelikle klasikleşmiş "Merhaba Dünya" örneğinden önce farklı bir örnek ile yola çıkmış olduk. Bu örnekte şimdilik dikkat etmeniz gereken nokta sayfa içeriğinin yer aldığı bölgeye nasıl bi program bloğu açtığımız konusu. PHP dilinde en yaygın ve doğru kullanım "<?php" ve "?>" tagleridir. Aslında PHP'nin ayarlarında "short tag" kullanımı açık ise "php" kelimesi yazılmadan "<?" ve "?>" şeklinde blok açılıp kapanabilir, hatta başka alternatifler de mevcuttur. Yine de en güvenli ve her durumda çalışacak yöntem "<?php" şeklinde bloğu açıp "?>" ile kapatmaktır. Arada kalan bölge artık HTML değil PHP kodlarımızın yer aldığı bölgedir.

Yukarıda verdiğimiz örnek 1'den 10000'e kadar "i" değişkenini saydıran ve her defasında i'nin değeri ve "<br>" HTML komutunun çıktısını veren bir örnektir.

4. PHP ile JavaScript/VBScript'in Farkı

Temelde PHP de Javascript ve VBScript de birer scripting dilidir.

Scripting kavramını kısaca açıklamak gerekirse, bir programa çekrideğine eklenti olan ve projeyi yeniden derlemeden kolayca değiştirilebilen program parçalarına denir. Örneğin bazı bilgisayar oyunları son kullanıcıya ulaştıktan sonra yeni bölümler programın exesi değiştirilmeden yalnızca scriptler eklenerek oyuna ilave edilebilir. Hatta son kullanıcıya şahsen müdahele hakkı bile tanınabilir. Benzer biçimde birçok IRC programı (örneğin MIRC), kullanıcıya chat serverlarında ve chat odalarında yapmak istedikleri şeyleri programlayabilmeleri için scripting desteğiyle gelirler.

Az önce verdiğimiz 1'den 10000'e kadar sayı saydırıp ekrana yazdırma örneğinin PHP haricinde JavaScript ve VBScript ile de yapılabileceğinden bahsetmiştik. Örnekleri aşağıda yer almaktadır.

JavaScript:

<html>
<head>
<title>Sayfa Basligi</title>
</head>
<body>
<script type="text/javascript"> 
for(i=1;i<=10000;i++)
    document.write(i+"<br>");
</script>
</body>
</html>

VBScript:

<html>
<head>
<title>Sayfa Basligi</title>
</head>
<body>
<script type="text/vbscript"> 
For i = 1 To 10000
    document.write(i & "<br>")
Next
</script>
</body>
</html>

Bu iki script PHP'den yapmış olduğumuz örnekle aynı sonucu verirler. Ancak çalışma yapıları arasında PHP'ye kıyasla çok büyük farklılıklar yer almaktadır. Çünkü JavaScript ve VBScript bu şekilde kullanıldıklarında istemci tarafında (client-side) çalışırlar. Kısacası web server, web browser'a bir çıktı verdiğinde bu scriptler de çıktının içinde olduğu gibi yer alır ve browser sayfayı göstermek istediği anda çalıştırılarak sonuç üretirler. PHP'de ise herşey sunucu tarafındadır (server-side). PHP scripti sunucuda çalıştırılır ve çıktısı web browsera gelir.

Şekil 3.

4.1. Bunlardan hangisi daha iyi sonuç verir?

PHP oldukça hızlı bir dildir. Dolayısıyla her tür kıyaslamada JavaScript/VBScript'e göre daha iyi sonuç verecektir. Ayrıca PHP yalnızca text output vermekle ilgilenir. İstemci tarafında çalışan diğer scripting dilleri browsera bağımlı başka birçok nesneyle de ilgilenmek zorundadırlar. Fakat burada gelmeye çalıştığımız asıl nokta bu değil. Test ortamında kendi makineniz üzerinde çalışıyor olabilirsiniz. Ancak yaptığınız PHP programı/web sitesi yayına girdiği andan itibaren sunucu ve istemci aynı makine olmaktan çıkacaktır. Bu durumda istemcilerin makinelerinin değişken performanslarının sitenizin çalışma hızına etkisini minimuma indirmek için yukardaki gibi örneklerde PHP kullanmak çok daha mantıklı bir yöntem olacaktır. Zamanla PHP kullanmamızı mecburi kılacak veritabanıyla iletişim gibi konulara da geleceğiz. Ancak PHP kullanmamız zorunlu olmayan birçok durumda dahi PHP doğru seçim olacaktır.

4.2. Ne zaman hangi dili kullanmamız lazım?

Bu sorunun cevabını verebilmek için PHP'nin bize tam olarak ne sağladığını anlamak lazım. PHP, kendisine ait scriptleri sunucu tarafında çalıştırıp, bunlardan oluşturduğu sonuçlarla birlikte bir HTML çıktı üreterek istemciye yollar. Yani bir PHP sayfası çalıştıktan sonra browser'da "kaynağı görüntüle" (view source) seçeneği seçildiği zaman PHP kodlarını değil, bu kodların ürettiği sonuçlardan oluşmuş HTML kodlarını görürüz.

Bu iki anlama gelir.

  1. PHP dili kaynak kodları istemciden bağlanan kişilerden korumak açısından güvenlidir. Sunucuya erişim yetkisi olmayan kişiler tarafından görüntülenmesi imkansızdır. (Hatta Zend firmasının uygulamaları ile sunucuya erişim yetkisi olan kişilerden de gizlenebilir). İstemci tarafında çalışan scripting dillerinin kodları ise açıktır, standart yöntemlerle gizlenemez.

  2. PHP bütün işi sunucu tarafında yapar ve istemciye ulaştıktan sonra PHP'nin artık hiçbir fonksiyonu kalmamıştır. Bu yüzden PHP ile dinamik bir sayfa oluşturmak, browserda olan olayları PHP'ye yeni bir sayfa yükletmeden göndermek, sonuçlarını almak mümkün değildir. AJAX ve benzeri yöntemler ile sayfa güncellenmeden PHP'den veri çekilebilir ancak yine istemci tarafında çalışan dillerin yardımına ihtiyaç vardır. Kısacası bu tür durumlarda JavaScript, VBScript gibi dillerin faydasını görmekteyiz. Bu diller browserla ve HTML nesneleriyle doğrudan etkileşim içersindedirler. Yeni bir sayfa yükletmeden o sayfa içersindeki herşeyi kontrol edebilir, kullanıcı ile interaktif bir şekilde çalışabilirler.

Yani amacınız bir linke ya da butona tıklanınca o sayfa içersinde bir mesaj çıkartmak, bir resmin üzerine mouse ile gidince resmin değişmesi gibi konular ise PHP yanlış bir seçimdir. Ancak sayfa oluşturulurken veritabanından okunan değerlerin ekrana yazdırılması, HTML formlarından gönderilen verilerin veritabanına kaydedilmesi ya da sayfanın sabit kısımlarına (örneğin menü) her dosyada yer vermek ve güncellerken tüm dosyaları güncellemek yerine tek bir dosyadan yükletmek gibi amaçlarda PHP doğru seçim olacaktır.

5. Merhaba Dünya Örneği

Şekil 4.

Birçok dilde ilk öğrenilen şey ekrana nasıl yazı yazdırıldığıdır. Elbette ki PHP'de de bu çok önemli bir konudur ve şimdi bu konuyla ilgili detayları göreceğiz.

PHP'de bunu yapmanın birden fazla yolu mevcuttur. İlk olarak en temel yazı yazdırma örneğini görelim.

5.1. echo

<html>
<head>
<title>Sayfa Basligi</title>
</head>
<body>
<?php
echo "Merhaba Dünya";
?>
</body>
</html>

"echo" komutu yazı yazdırmak için PHP'deki en genel ve en hızlı yöntemdir. Bu komut doğrudan PHP'nin çekirdeğinde yer alan bir komuttur. Hiçbir değer döndürmez. Bu fonksiyonu çağırırken parantez kullanmak gerekmez. Parantez kullanılmadığı durumda virgüllerle ayrılarak birden fazla parametre alabilir (bu parametrelerin değerlerini yan yana yazar).

Diğer alternatifler ise Basic'den alışık olduğumuz "print" ve C'den alışık olduğumuz "printf" komutlarıdır. Bunlardan "print" "echo" ile büyük benzerlikler taşır. Hız olarak hemen hemen "echo" ile aynıdır. "print"in fazladan bir sonuç döndürdüğü düşünülecek olursa tesbit edilmesi güç derecede "echo"dan daha yavaştır diyebiliriz. Ayrıca "echo" gibi birden fazla parametre alma özelliğine sahip değildir.

5.2. print

<html>
<head>
<title>Sayfa Basligi</title>
</head>
<body>
<?php
print "Merhaba Dünya";
?>
</body>
</html>

Son olarak "printf" komutunu ele alacak olursak "printf", "echo" ve "print"den epey farklı bir komuttur. C kütüphanesindeki "printf" ile hemen hemen aynı şekilde çalışır. PHP'den ilerki konularda göreceğimiz şekilde değişkenler belirli bir tipe bağımlı olarak tanımlanmazlar ve dinamik olarak tip değiştirebilirler. Ancak printf komutu ile C'deki gibi değişkenleri formatlayabiliriz. "Merhaba Dünya" örneğine geri dönecek olursak printf de diğerlerinden çok farklı bir kullanıma sahip değildir.

5.3. printf

<html>
<head>
<title>Sayfa Basligi</title>
</head>
<body>
<?php
printf("Merhaba Dünya");
?>
</body>
</html>

Bunların haricinde ekrana çıktı veren vprintf(), exit() gibi başka komutlar da yer almaktadır. Ancak "Merhaba Dünya" örneği için şimdilik bu kadarı yeterli.

6. Değişkenler

PHP'de değişken kullanımı diğer birçok dile göre çok daha basittir. Ancak PHP'nin değişkenleri nasıl yorumladığı iyi anlaşılmadığı zaman bazı durumlarda programcı problemlerle karşılaşabilir. Bu sebeple PHP'de yer alan değişken tipleri, değişkenlerin yapısı, değişken tip dönüşümleri bilinmesi gereken önemli konulardır.

PHP'de desteklenen değişken tipleri şunlardır:

  1. Boolean: Doğru/Yanlış

  2. Integer: Tam Sayı

  3. Float: Ondalıklı Sayı

  4. String: Metin

  5. Array: Dizi

  6. Object: Nesne

  7. Resource: Kaynak

  8. NULL: Boş

PHP'de bu değişken tipleri olduğu halde genellikle "değişken tipi" ile ilgili çok fazla bir işlem yapılmaz. Çünkü PHP'de değişken tanımlama zorunluluğu yoktur. Bir değişken, eşitlendiği değere göre otomatik olarak tip belirleyebilir ve daha sonra yine otomatik olarak tip dönüşümü yapabilir. Bu özellik PHP'yi programcılar için çok daha kolay kullanımlı bir dil haline getirmiştir. Zamanla çeşitli örneklerle bunları göreceğiz.

Şimdi PHP değişkenlerinin bazı özelliklerini tanıyalım.

PHP değişkenleri başlarında dolar işaretiyle ($) kullanılırlar.

Büyük küçük harf hassasiyetine sahiplerdir, yani $a ve $A iki farklı değişken olarak algılanır.

Değişken isimleri a'dan z'ye bir harf ya da alt çizgi ( _ ) karakteri ile başlayabilir. Rakam ya da başka bir sembol ile başlayamaz.

$this özel bir değişkendir. Bir değere eşitlenemez.

Değişkenlerin başında kullanılan $ sembolünün yardımıyla PHP'de değişkenin değerinden başka bir değişken oluşturabilme özelliği vardır. Buna PHP'de "değişken değişkenler" (variable variables) ismi konulmuştur. $ sembolleri iç içe istenilen sayıda kullanılabilmektedir. Örnek:

değişken değişkenler örnek 1

<?php
$a = "abc";
$$a = "123";
echo $abc;
?>

Bu program ekrana "123" yazacaktır. Dikkat ederseniz ekrana yazdırılan değişken $abc olduğu halde programın içinde "abc" bir değişken olarak tanımlanmamış durumda. Yani $abc = "123"; şeklinde bir atama yapılmamış. Fakat $a değişkenine string olarak "abc" değeri yüklendikten sonra $$a "123"'e eşitlenmiş. $$a'yı $($a) şeklinde düşünecek olursak $a'nın değeri "abc" olduğu için $$a = $abc anlamına gelmektedir. Bu daha da iç içe ilerletilebilir. Örnek:

değişken değişkenler örnek 2

<?php
$a = "abc";
$$a = "def";
$$$a = "ghi";
$$$$a = "123";
echo $ghi;
?>

Satır sırasıyla $a "abc"'ye, $abc "def"'ye, $def "ghi"ye ve $ghi ise "123"e eşitlenmiş oldu. Burada $$$$a yerine $$$abc, $$def ya da $ghi kullanabilirdik. Tek bir $ kalana kadar sağdan sola doğru değişkenlerin değerlerini yerine koyarak ilerlediğimizde bu sonuca varıyoruz.

PHP'de otomatik olarak yapılan değişken dönüşümlerine bazı örnekler verelim.

değişken dönüşümleri

<?php
$a = "15"; // $a string tipi bir degisken 
           // olarak tanimlandi ve degeri 
           // "15" oldu

$a += 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

$c = 100 + "55 abc"; // $c degişkeni integer 
                     // olarak tanimlandi ve 
                     // degeri 155 oldu

$d = 100 + "abc"; // $d degişkeni integer 
                  // olarak tanimlandi ve 
                  // degeri 100 oldu
?>

İlk aşamada değişkenlerle ilgili bilmemiz gereken özellikler bunlardır. Konular ilerledikçe değişkenlerin farklı özelliklerini de göreceğiz.

7. 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
$sayi1 = 3;
$sayi2 = 5;
$toplam = topla($sayi1, $sayi2);
echo $toplam;

function topla($a, $b)
{
    return $a+$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/C++ gibi dillerde kaynak kodlar içersinde yukardan 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çersinde kullanılan değişkenler lokal değişkenlerdir. Yani ana programda tanımladığımız değişkenlerin değerleri fonksiyon içersinde geçersizdir ve aynı değişken ismi fonksiyonun içersinde kullanılsa da ana programdaki değişkenlerin değerlerini bozmazlar. Örnek:

lokal değişken örneği 1

<?php
$sayi1 = 3;
$sayi2 = 5;
$toplam = topla();
echo $toplam;

function topla()
{
    return $sayi1+$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: ".$a."<br>";
test();
echo "Ana programda a'nin degeri: ".$a."<br>"; 

function test()
{
    $a = 25;
    echo "test() fonksiyonunda a'nin degeri: ".$a.
         "<br>";
}
?>
</body>
</html> 

Bu programın çıktısı şu şekilde olacaktır.

Ana programda a'nin degeri: 100
test() fonksiyonunda a'nin degeri: 25
Ana programda a'nin degeri: 100

Sırasıyla PHP kod satırlarını inceleyecek olursak;

  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. Fonksiyon içersinde $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 birkez 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çersinde 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çersinde kullanmanın yolunu göreceğiz. Bunu "global" komutu ile yapıyoruz. Fonksiyon içersinde 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>
</head>
<body>
<?php
$a = 100;
echo "Ana programda a'nin degeri: ".$a."<br>";
test();
echo "Ana programda a'nin degeri: ".$a."<br>"; 


function test()
{
    global $a;
    $a = 25;
    echo "test() fonksiyonunda a'nin degeri: ".$a.
         "<br>";
}
?>
</body>
</html> 

Bu örnekte çıktı şu şekilde olacaktır.

Ana programda a'nin degeri: 100
test() fonksiyonunda a'nin degeri: 25
Ana programda a'nin degeri: 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çersinde 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. $a'nın 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çersinde atanan değere eşit oldu.

Peki "global" komutu bize ne sağlar? Bir fonksiyona parametre olarak verilmeyen ancak program içersinde global olarak anlam ifade eden değişkenleri fonksiyon içersinden 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çersinde 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
$sayi1 = 3;
$sayi2 = 5;
$toplam = topla();
echo $toplam;

function topla()
{
    global $sayi1;
    global $sayi2;
    return $sayi1+$sayi2;
}
?>
</body>
</html> 

Bu programın çıktısı da 8 olacaktır. Dikkat ettiyseniz "topla()" fonksiyonu parametre almıyor ve $sayi1 ve $sayi2'nin değerlerini fonksiyon dışında tanımlanan global değişken değerlerinden alıyor.

PHP'de fonksiyonlar değer döndüren ve değer döndürmeyen şeklinde ikiye ayrılmazlar. Yani tanımlanışları açısından bir fark bulunmamaktadır. Eğer siz bir fonksiyonda "return" komutunu kullanır ve yanında bir değer ya da değişken yazarsanız bu fonksiyon bir değer döndürecektir. "return" komutu bulunmayan fonksiyonlar ise bir değer döndürmezler, sadece fonksiyon bloğunda yer alan programı çalıştırıp çağırıldıkları yere geri dönerler.

8. Bu Bölümün Değerlendirmesi

Şekil 5.

Bu ilk bölümde PHP dilinin genel yapısına bir göz attık, değişkenler ve fonksiyonlar konusuna giriş yaptık. Önümüzdeki bölümlerde PHP'nin daha güzel özelliklerine göz atacağız ve yavaştan PHP'yi işe yarar biçimde kullanmaya başlayacağız. Şimdilik editörüm Nightlord'a bir iyilik yaparak yazıyı daha uzatmıyor ve burada noktalıyorum. Gelecek sayıda görüşmek üzere.

emir (at) akaydin (nokta) com

plazma - 2008