Php de sınıflar birbiriyle ilişkili değişken ve fonksiyonları bir arada tutan yapılardır. Sınıflar sayesinde kodlarımız daha anlaşılır ve sistematik olur.
Php de sınıfların özellik(değişken) ve metod(fonksiyon) olmak üzere temel olarak iki üyesi bulunur. Sınıf oluşturmanın avantajlarını kullanabilmek için bu özellik ve metotların birbirleriyle ilişkili olması önemlidir. Php de sınıf tanımlarken class anahtar sözcüğü kullanılır. Sınıf ismi belirtilirken ayrım yapabilmek için genellikle büyük harfle başlayarak isimlendirme yapılmaktadır. Aşağıda bir sınıfın yapısı görülmektedir.
<?php
class Sehir
{
// özellikler
public $ad;
public $plaka;
// metod
public function yazdir()
{
echo $this->plaka . ' plaka nolu şehir: ' . $this->ad;
}
}
?>
yazdir() metodu içinde gördüğünüz $this anahtar sözcüğü sınıf içinde tanımlı olan özellik ve metodlara erişmek için kullanılır. Sınıf özellikleri $ad şeklinde tanımlansa da bu özellik $this sözcüğüyle beraber kullanılırken başındaki $(dolar) simgesi kaldırılır ve aşağıdaki şekilde kullanılır.
$this->ad; // Doğru
$this->$ad; // Hatalı
Sınıftan nesne oluşturmak
Sınıfımızı ve üyelerini bu şekilde oluşturduk. Peki biz bu sınıfı nasıl kullanacağız? Burada yeni bir kavram karşımıza çıkıyor. Bu da sınıftan nesne oluşturma veya sınıfı örnekleme dir. Bir sınıftan nesne(object) üretmek için new anahtar sözcüğü kullanılır. Sınıfları bir veri türü olarak düşünürsek, bu çağrılan sınıf türünde bir değişken tanımlıyoruz diyebiliriz. Oluşturulan bu nesne ile sınıf özellik ve metodlarına sınıf dışından erişebiliriz.
// Sınıftan nesne oluşturma
$sehir1 = new Sehir();
$sehir1 adında Sehir sınıfından bir nesne türettik.
// nesne ile sınıf özellik ve metodlarına erişim
$sehir1->ad = 'Erzurum';
$sehir1->plaka = 25;
$sehir1->yazdir();
$this sözcüğünde olduğu gibi $sehir1 nesnesini yazdıktan sonra -> işareti ve sınıf özellikleri ($ad, $plaka) başında $(dolar) simgesi olmadan kullanılır. Bu şekilde $sehir1 nesnesi ile sınıfın $ad, $plaka özelliklerine erişip değer ataması yaptık ve yazdir() metodunu çalıştırarak 25 plaka nolu şehir: Erzurum mesajını ekrana yazdırdık.
<?php
class Sehir
{
// özellikler
public $ad;
public $plaka;
// metod
public function yazdir()
{
echo $this->plaka . ' plaka nolu şehir: ' . $this->ad;
}
}
$sehir1 = new Sehir();
$sehir1->ad = 'Erzurum';
$sehir1->plaka = 25;
$sehir1->yazdir();
?>
ÖRNEK UYGULAMA
Şimdiye kadar öğrendiğimiz bilgilerle daha geniş kapsamlı bir örnek yapalım. Örnekte bir kitabın isim, yazar ve fiyat bilgileriyle işlem yapan bir Kitap sınıfı oluşturalım.
<?php
class Kitap
{
public $isim;
public $yazar;
public $fiyat;
public function kaydet($isim, $yazar, $fiyat)
{
$this->isim = $isim;
$this->yazar = $yazar;
$this->fiyat = $fiyat;
}
public function etiketYazdir()
{
echo 'Kitap: ' . $this->isim . '<br>'
. 'Yazar: ' . $this->yazar . '<br>'
. 'Fiyatı: ' . $this->fiyat . '<hr>';
}
}
$kitap1 = new Kitap();
$kitap2 = new Kitap();
$kitap1->kaydet('İnce Memed', 'Yaşar Kemal', 30);
$kitap2->kaydet('Hariciye Koğuşu', 'Peyami Safa', 40);
$kitap1->etiketYazdir();
$kitap2->etiketYazdir();
?>
Örnekte Kitap isimli bir sınıf tanımladık. Bu sınıfın isim, yazar ve fiyat adında üç adet özelliği ve kaydet() ve etiketYazdir() adında iki metodu var.
kaydet() metodu, kendisine parametre olarak gönderilen 3 değeri $this anahtar sözcüğü yardımıyla sınıfın isim, yazar ve fiyat özelliklerine atıyor. etiketYazdir() metodu ise bu 3 özelliği kullanarak ekrana bir metin bastırma işlemi yapıyor. Sınıf tanımı bittikten sonra aşağıda $kitap1 ve $kitap2 adında iki adet Kitap sınıfından nesne üretiyoruz. Bu nesneler ile kaydet() metoduna gerekli parametreleri gönderdik [$kitap1->kaydet('İnce Memed', 'Yaşar Kemal', 30);] ve daha sonra etiketYazdir() metodlarını çağırarak çıktımızı elde ettik. Sonuç çıktısı aşağıdaki gibidir.
Örnek çıktısı