Yazdır 07 Nisan 2010 Çarşamba (Hit: 13962)

Global Değişkenli Fonksiyonlar

Bir fonksiyon içinde tanımlı olan değişkenler sadece o fonksiyon içinde geçerlidir. Dolayısıyla fonksiyon içindeki değişkenleri fonksiyon dışında kullanamazsınız. Bunu yapabilmek için return ile kullanmak istediğimiz değişkenleri göndeririz. Aynı şekilde fonksiyon dışındaki değişkenleri de fonksiyon içinde kullanamazsınız. Eğer bir değişkeni global olarak tanımlarsanız o değişkeni sayfa içerisindeki her yerde kullanabilirsiniz. Aşağıdaki örneği inceleyiniz.

<?php
$sayi=15;

function iki_kat($sayi){
   $sayi=$sayi*2; // $sayi değişkeninin değeri iki kat arttırılıyor
   return $sayi;
}

echo iki_kat($sayi); // ekrana 30 yazar.
echo "<br>";
echo $sayi; // ekrana 15 yazar.
?>

$sayi değişkeninin değeri iki kat arttırıldığı halde echo $sayi; komutu ekrana 15 yazar. Çünkü fonksiyon içindeki $sayi değişkeni ile fonksiyon dışındaki $sayi değişkeni farklıdır. İsimleri aynı olsa dahi tanımlandığı yerler itibariyle farklı olduklarından iki ayrı değişken olarak değerlendirilirler. Aynı örneği global değişken tanımlamasını kullanarak yapalım.

<?php
$sayi=15;

function iki_kat($sayi){
   global $sayi;
   $sayi=$sayi*2; // $sayi değişkeninin değeri iki kat arttırılıyor
   return $sayi;
}

echo iki_kat($sayi); // ekrana 30 yazar.
echo "<br>";
echo $sayi; // ekrana 30 yazar.
?>

Görüldüğü gibi $sayi değişkeni global olarak tanımlanmıştır. Bundan dolayı fonksiyon bu değişkeni tanır değerini 2 kat arttırmaktadır. Dolayısıyla fonksiyon dışındaki $sayi değişkeni ile fonksiyon içindeki $sayi değişkeni aynı değişkendir.

 

Örnek: Aldığı sayıları sayfada tanımlı olan $toplam değişkenine ekleyen fonksiyonu tanımlayalım.

<?php
$toplam=30;
echo "Toplam=",$toplam; // Toplam=30
echo "<br>";

function ekle($sayi1,$sayi2){
   global $toplam;
   $toplam+=$sayi1+$sayi2;
}

ekle(10,15);
echo "Toplam=",$toplam; // Toplam=55
?>

 

Örnek: Aldığı kullanıcı adı ve şifre bilgilerini tanımlı değerlerle karşılaştıran fonksiyonu tanımlayalım.

<?php
$kullanici_adi="muyo";
$sifre="muric";

function giris($user,$password){
   global $kullanici_adi;
   global $sifre;
   if ($user==$kullanici_adi and $password==$sifre)
      $login=true;
   else
      $login=false;
   return $login;
}

if (giris("hayr","h1845")==true)
   echo "Giriş başarılı";
else
   echo "Hatalı kullanıcı yada şifre!";

echo "<br>";

if (giris("muyo","muric")==true)
   echo "Giriş başarılı";
else
   echo "Hatalı kullanıcı yada şifre!";
?>

 

Örnek: 1 ile 100 arasında,10 dan az sayıda rastgele ürettiği sayıları $sayılar dizisine ekleyen fonksiyonu tanımlayalım.

<?php
$sayilar=array();

function uret(){
   global $sayac;
   global $sayilar;
   $tane=rand(1,10); // üretilecek sayı sayısı
   for($i=1;$i<=$tane;$i++)
      $sayilar[]=rand(1,100); // üretilen sayı diziye ekleniyor.
}

function yaz(){
   global $sayilar;
   foreach($sayilar as $indis=>$deger)
      echo $indis+1,") ",$deger,"<br>";
}

uret();
yaz();

echo "<hr>";

uret(); // mevcut değerlere ekleme yapıyor
yaz();
?>

Örneğin ekran çıktısında çizginin üstündeki değerlerin çizginin altında da olduğuna dikkat ediniz. Bu da mevcut değerlere ekleme yapıldığını gösternektedir. Çünkü $sayilar dizisi global olarak fonksiyonlarda kullanılmıştır. Yani her iki fonksiyon da aynı dizi üzerinde değişiklik yapmaktadır.


Bu site meslek liselerinde bilişim bölümü web programcılığı dalında okutulan internet programcılığı dersine yardımcı olması için tasarlanmıştır. İletişim için iletisim@phpdefteri.com
Apache PHP MySQL PhpMyAdmin EasyPHP Xampp AppServ Wamp W3School

www.phpdefteri.com © 2010