Public, private, protected, extends, _construct
Classlarda Kullanılan Özel Kelimeler
Değişken veya Fonksiyon
Parametresi Kendi Klasında Çağrılırsa Klas Dışında Çağrılırsa Başka Klassa Aktarılıp Class İçerisinde Çağrılırsa Başka Klassa Aktarılıp Class Dışında Çağrılırsa
Public Çalışır Çalışır Çalışır Çalışır
Private Çalışır Çalışmaz Çalışmaz Çalışmaz
Protected Çalışır Çalışmaz Çalışır Çalışmaz
•var
PHP 5.3 e kadar Public yerine kullanılan tanımlamaydı. Artık kullanımı durumda php dikkat uyarısı yapar, kullanımdan kalkmıştır (depricated) fakat halen çalışır.
•public
Fonksiyona sınıf içinden ve sınıf dışından erişime izin verir. Ayrıca Kalıtım ile aktarılır.
•private
Bu erişim belirteci işaretlenen öğeye sadece sınıfın içinden erişilebileceği anlamına gelir ve bu öğeler kalıtım yoluyla aktarılmaz.
•protected
Bu erişim belirteci işaratelenen ögeye sadece sınıfın içinden erişilebileceği fakat alt sınıflara aktarılabileceği anlamına gelmektedir.
•extends
Eğer sınıfımız başka bir sınıfın alt sınıfı olacaksa extends anahtar sözcüğü ile aktarılır
•__construct
Class tanımlanınca hiç bir fonksiyon yada değişken çağrılmadan önce otomatik ilk çalışacak fonksiyonu belirtir.
•__destruct
Class yok edilince veya sayfa oluşumu (HTML) bitince çalışan fonksiyon
•Classla Aynı İsimdeki Fonksiyon
Class tanımlanınca hiç bir fonksiyon yada değişken çağrılmadan önce otomatik ilk çalışacak fonksiyonu belirtir.
<?php
class TestKlasi
{
public $HerkeseAcik = ‘Bana herkes ulaşabilir. ‘; //Herkese açık
protected $Korunmus = ‘Sadece klas içerisinden olanlar bana ulaşır. Beni kendisine ekleyen klasslarda kullanabilir. ‘; //Korunmuş
private $Ozel = ‘Sadece klas içerisinden olanlar bana ulaşır. Beni kendisine ekleyen klasslarda kullanamaz. ‘; //Özel
var $SiradanDegisken=’Ben sıradanım…’;
function EkranCiktisi()
{
echo $this->HerkeseAcik;
echo $this->Korunmus;
echo $this->Ozel;
}
}
$YeniKlas = new TestKlasi(); //Klas türetiliyor
echo $YeniKlas->HerkeseAcik; // Works
echo $YeniKlas->Korunmus; // Fatal Error
echo $YeniKlas->Ozel; // Fatal Error
$YeniKlas->EkranCiktisi(); // Tüm Değişken İçeriğini Gösterir (Public, Protected and Private)
?>
Kalıtım (extend) yoluyla aktarılan class ve public, private, protected fonksiyonlara örnek
<?php
class BenimKlas
{
// Contructors must be public
public function __construct() {
echo “Yapılandırıcı<br />”;
}
// Declare a public method
public function HerkeseAcik() {
echo “Herkese Açık Fonksiyon<br />”;
}
// Declare a protected method
protected function Korunmus() {
echo “Korunmuş Fonksiyon<br />”;
}
// Declare a private method
private function Ozel() {
echo “Özel Fonksiyon<br />”;
}
// This is public
function Herhangi()
{
$this->HerkeseAcik();
$this->Korunmus();
$this->Ozel();
}
}
$BenimKlastan = new BenimKlas;
$BenimKlastan->HerkeseAcik(); // Çalışır
$BenimKlastan->Korunmus(); // Klas dışından çağrıldığından çalışmaz
$BenimKlastan->Ozel(); // Klas dışından çağrıldığından çalışmaz
$BenimKlastan->Herhangi(); // Public, Protected and Private fonksiyonlar çalışaktır
//çünkü bu fonksiyonlar Herhangi fonksiyonun içerisinden çağrılır.
//Herhangi fonksiyonuda class içerisindedir.
class SeninKlas extends BenimKlas
{
// This is public
function Herhangi()
{
$this->HerkeseAcik(); //BenimKlasstan deviralınan fonksiyon
$this->Korunmus(); //BenimKlasstan deviralınan fonksiyon protected olduğundan aktarıldığı klas içerisindede çalışır.
$this->Ozel(); //BenimKlasstan deviralınan fonksiyon aktarıldığı klasta çalışmaz
}
}
$SeninKlastan = new SeninKlas;
$SeninKlastan->HerkeseAcik(); // Çalışır.
$SeninKlastan->Korunmus(); // BenimKlasstan deviralınan fonksiyon protected olduğundan class dışında çalışmaz
$SeninKlastan->Ozel(); // BenimKlasstan deviralınan fonksiyon, private olduğundan bulunduğu class dışında çalışmaz.
$SeninKlastan->Herhangi(); // Public fonksiyon deviralınsada class içinde ve dışında çağrılırsa çalışır.
// Protected fonksiyon class içinde çağrılırsa sadece çalışır ve başka klasa aktarılabilir.
// Private fonksiton class içide sadece çalışır. Dışında ve aktarıldığında çalışmaz.
?>