PHP: Nesne Yönelimli Programlama - Ders 3


Bir önceki yazımda görünürlük nedir ve nasıl tanımlancağından bahsetmiştim. Bu yazımda ise sınıf sabitleri ve static anahtar sözcüğünden bahsedeceğim.

Sınıf Sabitleri Nedir? 

Adı üstünde sabit bir değerdir. Nesne oluşturulmadan erişmek mümkündür.

Nasıl Tanımlanır?

const TANIM = "Sabit bir değer";
 

Nasıl Erişilir?

Dışarıdan erişmek için sınıf ismi ardından :: işleci son olarak sabit ismi

echo Uye::TANIM;

Sınıf içinden self, static yada static anahtar sözcüklerinden herhangi biriyle erişilir.

public function sabitGoster()
{
	return self::TANIM;
}

Örnek Kod:

Kod
<?php

class Uye
{
    //Sabit Tanımlaması
    const TANIM = "Ben bir üye sınıfıyım. <br/>";

    public $ad = "John Doe";

    public function sabitGoster()
    {
        // Sınıf içinde sabite erişim
        return static::TANIM;
    }

}

class Rutbe extends Uye
{
    const TANIM = "Ben bir rütbe sınıfıyım. <br/>";

    public function anaSabitGoster()
    {
        return parent::TANIM;
    }

}

$x = new Rutbe;
echo $x->sabitGoster();
echo $x->anaSabitGoster();

// Dışardan sabite erişim
echo Uye::TANIM;
echo Rutbe::TANIM;

 


Static Anahtar Sözcüğü

Static özelliği atanmış bir özellik veya metot ram de saklanır.Static tanımı yaptığınızda o sınıfın üyesine aynı sınıf sabitlerinde olduğu gibi doğrudan erişebiliriz. Static özelliğini herşeye atamak doğru değildir. Genelde sabit değişken veya metotlara atarız.

Static özelliği atanmış bir özellik veya metoda sınıf içinde $this-> yerine self::,parent:: veya static:: ile erişim sağlanmaktadır.

Nasıl Tanımlanır?

static $ad = "Sabit bir değer";

Kod
<?php

class Uye
{
    // Statik özellik tanımlama
	public static $adsoyad = "John Doe";
	private static $sayac = 0;

	public function sayacArttir()
	{
	    // Sınıf içinde statik özelliğe erişim
		return self::$sayac++;
	}
	
    // Statik metot tanımlama
	public static function sifrele($deger)
	{
		return md5($deger);
	}

}
// Dışardan statik özelliğe erişim
echo Uye::$adsoyad."<br/>";

// Dışardan statik metoda erişim
echo Uye::sifrele("Rıza Güneş")."<br/>";

$x = new Uye;
echo $x::$adsoyad."<br/>";
echo $x->sayacArttir()."<br/>";
echo $x->sayacArttir()."<br/>";
echo $x->sayacArttir()."<br/>";


$y = new Uye;
echo $y::$adsoyad."<br/>";
echo $y->sayacArttir()."<br/>";
echo $y->sayacArttir()."<br/>";
echo $y->sayacArttir()."<br/>";

 


Ders sonlarına doğru yağmurun şiddetli yağması ve gök gürüldemesi az biraz dikattimi dağıttı. Bu yüzden kusura bakmayın. :) Eksik veya hatalı gördüğünü yerleri lütfen yorum olarak belirtin. Kendinize iyi bakın. :)


Kategoriler: PHP