Php de Nesne Yönelimli Programlama - Sınıf yapısı ve kullanımı

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ı

ETİKETLER
php ile nesne yönelimli programlamaphp de sınıf yapısıphp de nesne oluşturmaphp de sınıf elemanlarına erişimphp de this anahtar sözcüğüphp de sınıf kullanımı
Öncekİ Yazı

Android de notification (bildirim) oluşturma

Sonrakİ Yazı

Php de Nesne Yönelimli Programlama - Erişim belirteçleri

İlgili Yazılar