PHP sınıflar

► Detaylı anlatım

PHP'de sınıf içinde aynı veya farklı veri türünden sabit ve değişkenlerle, bu sabit ve değişkenleri kullanan ve işlem yapan fonksiyonlardan oluşan bir yapıdır. Sınıf içinde yer alan değişkenler özellik (property), fonksiyonlar ise metod (method) olarakta adlandırılır. Temel sınıf bildirimi class anahtar kelimesi ve peşinden gelen sınıf adı ile başlar. Daha sonra, sınıf sabit ve değişkenleri ile fonksiyon tanımlamalarının arasında yer aldığı { } parentezleri kullanılır. Geçerli bir sınıf adı bir harf veya alt çizgi ile başlar ve herhangi bir sayıda harf, sayı veya alt çizgilerle devam eder.

Aynı anda birden fazla farklı veri türünü ve fonksiyon tanımlamalarını da barındırabilen sınıf adı altında oluşturulan nesne (object) veri türü ile tüm sınıf içeriğine ulaşabilir ve işlem yapabiliriz.

Sınıf tanımlaması

Sınıf tanımlaması aşağıdaki şekilde yapılır:


class sınıf_adı
{
    public $deg_adi = 'öntanımlı değer'; // değişken (property) bildirimi
   
    // fonksiyon (method) bildirimi
    public function fonksiyon_adı()
    {
        fonksiyon komut satırı;
        .
        .
        fonksiyon komut satırı;	 
    }
}


class personel
{
    public $adi;    // String değişken
    public $soyadi; // String değişken
    public $yasi;   // Integer değişken
	
    public function yaz_bilgi()
    {
        echo $this -> adi . " " . $this -> soyadi . " " . $this -> yasi . '<br/>';
    }
}

Yukarıdaki sınıf yapısı içinde iki adet string ve bir adet integer değişken ile sınıf içindeki verileri ekrana yazdırmaya yarayan bir fonksiyon tanımladık.

$this değişkeni ve -> işlemcisi

Sınıf içindeki bir fonksiyondan bir veri değişkenine erişim için $this-> ifadesi kullanılmaktadır.

Sınıf yapısı içinde veri atamak için tanımlanan değişken adlarının $ işareti ile başladığına, ancak değişkene erişim için değişken adının başındaki $ işaretinin kullanılmadığına dikkat ediniz!

Sınıf yapısına ait nesne veri türünü tanımladığımızda, ilgili sınıf yapısının tüm verilerine tanımladığımız nesne veri türü yoluyla ulaşabiliriz. Nesne veri türü tanımlamak için new ifadesi kullanılır. Böylelikle sınıf yapısının bir kopyasını oluşturmuş oluruz.

new anahtar kelimesi

$nesne_adı = new sınıf_adı();

Tanımlanan nesnenin sınıf içindeki veri değişkenlerine erişimi için -> işlemcisi kullanılır.


$obj_per = new personel();

$obj_per->adi = "Mehmet";      // nesne verisi yoluyla sınıf değişkenine değer atama
$obj_per->soyadi = "Çalışkan"; // nesne verisi yoluyla sınıf değişkenine değer atama
$obj_per->yasi = 25;           // nesne verisi yoluyla sınıf değişkenine değer atama

$obj_per->yaz_bilgi();         // nesne verilerini ekrana yazar.


<html>
<body>

<?php
    class personel
    {
        public $adi;          
        public $soyadi;       
        public $yasi;         
	
        public function  yaz_bilgi()
        {
            echo $this->adi . " " . $this->soyadi . " " . $this->yasi . '<br/>';
        }
    }

    $obj_per01 = new personel();
    $obj_per02 = new personel();

    $obj_per01->adi = "Mehmet";       
    $obj_per01->soyadi = "Çalışkan";  
    $obj_per01->yasi = 25;            

    $obj_per02->adi = "Selami";       
    $obj_per02->soyadi = "Yalçın";  
    $obj_per02->yasi = 32;

    $obj_per01->yaz_bilgi();
    $obj_per02->yaz_bilgi();
?>

</body>
</html>

Yukarıdaki dosyayı çalıştırdığımızda, web tarayıcımızda aşağıdaki ifadeler karşımıza çıkar::

Mehmet Çalışkan 25
Selami Yalçın 32

Yukarıdaki PHP dosyasında, personel adlı sınıf yapısından iki adet nesne verisi tanımlanır. Nesne verilerine farklı değerler atanarak ekrana yazılır.

new anahtar kelimesi ile bir sınıf yapısına ait bir nesne oluşturduktan sonra, bu değişkeni başka bir değişkene atayarak, atama yaptığımız değişkenin sınıf içindeki verilere ulaşmasını sağlayabiliriz.


<html>
<body>

<?php
    class personel
    {
        public $adi;          
    }

    $obj_per01 = new personel();

    $obj_per01->adi = "Ahmet";       

    $obj_per02 = $obj_per01;
    $obj_per03 = &$obj_per01;

    echo $obj_per01->adi . "<br/>"; 

    $obj_per02->adi = "Mehmet";       
    echo $obj_per02->adi . "<br/>";  

    $obj_per03->adi = "Murat";       
    echo $obj_per03->adi . " " . $obj_per01->adi;
?>

</body>
</html>

Yukarıdaki dosyayı çalıştırdığımızda, web tarayıcımızda aşağıdaki ifadeler karşımıza çıkar::

Ahmet
Mehmet
Murat Murat

Yukarıdaki PHP dosyasında, önce $obj_per01 adlı bir nesne oluşturulur. Bu nesne ile sınıf içindeki $adi değişkenine bir değer atanır. Sonra, $obj_per01 değişkeni değer yoluyla $obj_per02 değişkenine ve referans yoluyla $obj_per03 değişkenine atanır. $obj_per02 değişkenine yapılan atama ile farklı bir kopya oluşturulumuş olur, ancak $obj_per03 yapılan atama ile sadece mevcut kopyanın adresi geçirilmiş olur. Bu nedenle, $obj_per03 ile yapılan değişiklik $obj_per01 değerini etkiler.