Türkiyenin Paylasim PlatFormu
Merhaba Ziyaretçi Formumuzdan Daha İyi Yararlanabilmen İçin Üye Ol...
Türkiyenin Paylasim PlatFormu
Merhaba Ziyaretçi Formumuzdan Daha İyi Yararlanabilmen İçin Üye Ol...
Türkiyenin Paylasim PlatFormu
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Türkiyenin Paylasim PlatFormu

İYİ FORUMLAR,İYİ EGLENCELER...
 
AnasayfaAramaLatest imagesKayıt OlGiriş yapOyun salonu

 

 Php Dersleri (19.Bölüm)

Aşağa gitmek 
YazarMesaj
Admin
Administratör
Administratör
Admin


Ruh Hali : 15
Rep Gücü Rep Gücü : 18168
Rep Puanı Rep Puanı : 10

Php Dersleri (19.Bölüm) Empty
MesajKonu: Php Dersleri (19.Bölüm)   Php Dersleri (19.Bölüm) I_icon_minitimePaz Mart 29, 2009 7:40 pm

Değişkenlerin kapsamı: global ve static


Diğer ders konularımızda hesapla.php örneğini birlikte yaptıysak, bir nokta dikkatinizi çekmiş olmalı: dört fonksiyonda da aynı değişken adlarını kullanıyoruz ve sonucu aynı isimle print() fonksiyonuna gönderiyoruz. PHP nasıl oluyor da, aynı isimli değişkenleri buradaki gibi ayrı ayrı değerlerle ele alabiliyor? Bu sorunun cevabını verebilmek için değişkenlerin kapsam alanına bakmamız ve ve bu arada global deyimi ile tanışmamız gerekir.

Bir fonksiyonun değişkenleri, sadece o fonksiyonun ömrü süresince vardır; hiç bir fonksiyon diğer bir fonksiyonun değişkenlerinin veya kendisine verilmemiş bir başka değişkenin değerini bilemez; kullanamaz. Bunu hemen bir örnekle görelim. Şu kodu kapsam01.php adıyla kaydedelim

PHP- Kodu:

<HTML>
<HEAD>
<TITLE>PHP'de Fonksiyon</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<?php
$metin = "Başkalarına yararlı olmanın sınırı yoktur!";
function yazdir () {
print ("<h1>İşte metin: $metin </h1>");
}
// Başka kodlar buraya girebilir
yazdir();
?>
</BODY>
</HTML>

Normal görünüşlü bir fonksiyon ve kendisinden önce tanımlanmış olan $metin adlı değişkenin tuttuğu değeri, kendisi göreve çağrıldığı anda Browser penceresinde görüntülemeye hazır görünüyor! Fonksiyonun dışarıdan argüman istemediğini, kullanacağı print() komutunun konusu olarak $metin değişkeninin değerini kullanacağını da anlıyabiliyoruz. Fakat bu programı çalıştırdığımızda karşımıza çıkan manzara çok farklı oluyor.

Fonksiyonun çalıştığını, yazdırması beklenen şeylerin ilk bölümünü yazdırmış olmasından anlayabiliriz. Fakat, $metin değişkeninin değeri nerede? Şimdi bu sorunun cevabını biliyoruz.

$metin değişkeni fonksiyonun kapsama alanı (scope) dışında! Bir fonksiyon kendisine verilmeyen veya kendi içinde tanımlanmayan bir değişkeni kullanamaz; bilemez, değerinden haberi olmaz. Nitekim bu görüntüyü aldığınız sırada kaynak kodlarına bakarsanız, "<h1>..</h1>" etiketlerinin arasında sadece "İşte metin:" kelimelerinin bulunduğunu göreceksiniz.

Bir fonksiyonun dışında tanımladığımız değişkenlerimizi fonksiyona tanıtabilmek için global deyimini kullanırız; böylece değişken bütün program boyuinca küresel nitelik kazanmış olur, Aynı kodun fonksiyon bölümünü şöyle değiştirerek, kapsam02.php adıyla kaydedelim

PHP- Kodu:

function yazdir () {
global $metin;
print ("<h1>İşte metin: $metin </h1>");
}


Programımızı çalıştırdığımızda, bu kez metnin arzu ettiğimiz gibi görüntülendiğini göreceğiz.

Bu noktada dikkat etmemiz gereken şey, global deyimi ile kendisine kullanılmak üzere verilen değişken, artık bir bakıma fonksiyonun malı olur ve fonksiyon tarafından değeri değiştirilebilir. Bütün program boyunca kullanmaya niyetli olduğunuz global değişkenlerin, kullanımına verildiği fonksiyon tarafından değiştirilip-değiştirilmediğine dikkat edin.

Bir değişkenin bütün programda gerekli olmadığı ve sadece bir fonksiyon içinde kullanılacağı durumlarda bu değişkeni fonksiyonun içinde tanımlamak daha doğru olur. Fakat daha önce belirttiğimiz gibi fonksiyonların içinde tanımlanan değişkenler fonksiyon çalışırken var olur, fonksiyon sona erdiğinde de ölür. Başka bir deyişle, bir fonksiyonun içinde oluşturduğumuz bir değişkenin fonksiyon sona erdiğinde sıfırlanmaması için bir çare olması gerekir.

Bu çarenin adı, static deyimidir. Şöyle bir örnek düşünelim Sitemizdeki bir hesaplama fonksiyonu ziyaretçilerimizin yeni alışverişlerinin toplamını eski toplama ekleyerek, yeni ana toplamı buluyor ve ziyaretçi alışveriş sepetine yeni bir mal ekledikçe, ve o andaki ana toplamın ne olduğunu öğrenmek istedikçe, fonksiyonumuzun eski ana toplamı hatırlaması gerekiyor.

Şu andaki PHP bilgimizle böyle bir program yazmaya kalkmayalım ama daha basit bir örnek olarak bu kodu static.php adıyla kaydedelim

PHP- Kodu:

<HTML>
<HEAD>
<TITLE>PHP'de Fonksiyon</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<?php
function saydir () {
static $sayi = 0;
$sayi++;
print ("<h3>Fonksiyonun tuttuğu sayı: $sayi </h3>");
}
// Başka kodlar buraya girebilir
print ("<h2>Fonksiyonun birinci kez çağrılması:</h2>");
saydir();
print ("<h2>Fonksiyonun ikinci kez çağrılması:</h2>");
saydir();
print ("<h2>Fonksiyonun üçüncü kez çağrılması:</h2>");
saydir();
print ("<h2>Fonksiyonun dördüncü kez çağrılması:</h2>");
saydir();
?>
</BODY>
</HTML>

Bu programı, static deyimi olmadan çalıştıracak olursak, saydir() fonksiyonu her çağrıldığında $sayı değişkeninin baştan tanımlandığını ve bir türlü 1'den ileri gidemediğini göreceğiz.

static ise fonksiyon bittikten sonra $sayi değişkeninin değerinin değişmeden kalmasını sağlayacaktır.Şimdi, bir PHP programının gerektirdiği hemen herşeyi görmüş olduk, sadece iki özel araç, dizi değişkenler ve nesneler (Objects) kaldı. Bunları da gelecek bölümde ele aldıktan sonra, PHP'yi gerçek ortamda, Web'de kullanmaya başlayabiliriz.

Evet arkadaşlar çok uzun bir aradan sonra yeniden ders konularımıza ağırlık vereceğiz, önümüzdeki günlerde php hakkında anlatımların olacağı konular hakkında şimdiden belirtmek istiyorum.
Sayfa başına dön Aşağa gitmek
 
Php Dersleri (19.Bölüm)
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Php Dersleri (10.Bölüm)
» Php Dersleri (11.Bölüm)
» Php Dersleri (12.Bölüm)
» Php Dersleri (13.Bölüm)
» Php Dersleri (14.Bölüm)

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Türkiyenin Paylasim PlatFormu :: Webmaster :: Php Hakkında-
Buraya geçin: