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ı