PHP: Nesne Yönelimli Programlama - Ders 3
16-06-2015 Okuma Modu
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:
<?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";
<?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. :)