C Gömülü Programlama konularımız yayında...
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ı 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.
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.
$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.