FORUM Portal Albümlerim Sosyal Gruplar Kimler Online Bugünki Mesajlar
Geri git   JiyanBoard.org > WEBMASTER VE PROGRAMLAMA DiLLERi > Web Sitesi Tasarımı / Php, Asp, Perl, Cgi Scriptler > Php Scriptler
Kayıt ol CezalilarTüm Albümler Yardım Üye Listesi Ajanda Arama Bugünki Mesajlar Forumları Okundu Kabul Et

Konu Bilgileri
Konu Başlığı
Değişkenlerin kapsamı: global ve static
Konudaki Cevap Sayısı
0
Şuan Bu Konuyu Görüntüleyenler
 
Görüntülenme Sayısı
23

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 09-21-2008, 01:27   #1 (permalink)
KecaKurdan
 
Gulasor - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Sep 2008
Üye No: 8
Mesajlar: 3,693
Konular: 1968
Referanslari: 5
Arkadaslari: (11)
Nerden: KüRDiSTaN
Meslek: pc emekcisi :)
Interests: ASİ
Biyografi: kece kudan
Cinsiyet: .
Kullandigi Tesekkür: 30
Aldigi Tesekkürler: 254
Tecrübe Puanı: 150
Aldigi Puanlar: 3620
Gulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond repute
Ruh Hali:
Son Aktivitesi: Dün :   01:39 
Toplam Online Süresi: 6 Gün 10 Saat 58 Dakika 41 Saniye
Submit to Clesto Submit to Digg Submit to Reddit Submit to Furl Submit to Del.icio.us Submit to Jeqq Submit to Spurl
Standart Değişkenlerin kapsamı: global ve static

Değişkenlerin kapsamı: global ve static

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.

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

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:



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

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;

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

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.
Gulasor isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla

Bookmarks


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Hizli Erisim

Benzer Konular
Konu Konuyu Başlatan Forum Cvpl Son Mesaj
Dizi Değişkenlerin Düzenlenmesi Gulasor Php Scriptler 0 09-21-2008 01:24
Jack Johnson - Sleep Through The Static (2008) хέzάℓ Yabanci mp3 ler 0 09-20-2008 19:45
Static Veri Elemanları Neden Kullanılır? Gulasor C / C++ / C# 0 09-20-2008 16:04


WEZ Format +3. Şuan Saat: 14:21.

Design By: JB-Team
Powered by JBulletin® JiyanBoard Version
Copyright ©2007 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0