Plazma sayı 5, sayfa 51
Sayfanın metni

Sayfa 51

PHP 5'te public, private, protected gibi standartlarına uygun tanımlar eklenmiştir. PHP 4'te ise bir sınıfın içerisinde yer alan her şey public kabul edilmektedir.

PHP 4'te olmayan, C++ standartlarına uygun birçok diğer özellik de yine PHP 5'te eklenmiştir.

Şimdi PHP 5'teki sınıfların başlıca özelliklerini bir bir inceleyelim.

$this Kelimesi

Sınıfların içerisinde tanımlanan değişkenlere sınıfların metotlarından (metot: sınıfa ait fonksiyon) ulaşmak istenildiğinde $this kelimesini kullanırız. Örnek:

class Film

(

private $isim;

public function okulsiml()

(

return $this->isim;

Türetilmiş Sınıflar

Birbirleriyle birçok ortak özelliği olan sınıflar birbirlerinden türetilebilirler. Örnek olarak Sürüngen ve Kertenkele sınıflarını ele alalım. Sürüngen sınıfı herhangi bir sürüngenin yaş, boy ve sürünme hızı bilgilerini tutsun. Bu bilgiler Kertenkeleler için de geçerli olacaktır. Ancak Kertenkelelerde her sürüngende de bulunmayan kuyruk mevcuttur. Buna bağlı olarak Kertenkele sınıfına bir de kuyruk uzunluğu kriteri eklemek isteyebiliriz. Yapmamız gereken öncelikle Sürüngen sınıfını tanımlayıp, daha sonra Sürüngen sınıfından türetilen Kertenkele sınıfını oluşturmaktır.

Bir sınıftan yeni bir sınıf türetmek için "extends" kelimesi kullanılır. Örnek:

<?php class Surungen 1 // Degisken Tanimlari private Ş$yas; private Ş$boy; private $surunmeHizi;

// Metot Tanimlari public function okuYas()

( )

return $this->yas;

public function yazYas($y) 1

$this->yas $y;

)

public function okuBoy() (

)

return $this->boy;

public function yazBoy($b) 1

)

$this->boy Sb;

public function okuSurunmeHizi()

return $this->surunmeHizi;

public function yazSurunmeHizi($sh)

$this->surunmeHizi $sh;

)

class Kertenkele extends Surungen ( // Degisken Tanimlari private $kuyrukUzunlugu;

// Metot Tanimlari public function okuKuyrukUzunlugu ()

1 )

return $this->kuyrukUzunlugu;

public function yazKuyrukUzunlugu ($ku)

$this->kuyrukUzunlugu $Sku;

)

// Kertenkele sinifindan kertenkelemizi tanimlayalim $kertenkelem new Kertenkele();

// Kertenkelemizin ozelliklerini tanimlayalim $kertenkelem->yazYas(2); $kertenkelem->yazBoy(15); $kertenkelem->yazSurunmeHizi(7); $kertenkelem->yazKuyrukUzunlugu (6);

// Kertenkelemizin ozelliklerini ekrana yazdiralim

echo "Yas: ".$kertenkelem->okuYas()."<br>"; echo "Boy: ".$kertenkelem->okuBoy()."<br>"; echo "Surunme Hizi: ".$kertenkelem->okuSurunmeHizi(). "<br>; echo "Kuyruk Uzunlugu: ". ."<br>"; Bu örnekte dikkat etmemiz gereken özellik şudur.

"$kertenkelem" ismiyle tanımladığımız nesne, "Kertenkele" sınıfından oluşturulmuş bir nesnedir. Bu nesnenin yaş, boy, sürünme hızı özelliklerini kullanıyoruz ancak "Kertenkele" sınıfında böyle özellikler tanımlı değil. Bu özellikler sınıfı tanımlarken kullandığımız türetme yönteminden geliyor. "class Kertenkele extends Surungen" dediğimiz için Kertenkele sınıfı Surungen sınıfının tüm özelliklerine sahip bir şekilde yaratılıyor.

Yapıcı ve Yıkıcılar

Her sınıf oluşturulurken ve yok edilirken çağırılan fonksiyonlar vardır. Bunlara "yapıcı" ve "yıkıcı" (constructor / destructor) fonksiyonlar denir. PHP'de yapıcı fonksiyon "function __construct()" şeklinde tanımlanmıştır ve gerektiği takdirde parametre alabilir. Yıkıcı fonksiyon ise "function __destruct()" şeklinde tanımlanmıştır. Parametresiz kullanılması gerekmektedir.

PHP'de yıkıcı fonksiyonlar çok sık kullanılmazlar. Çünkü genellikle PHP'de bir scriptin çalışması sona erdiğinde PHP motoru otomatik olarak açılan bağlantıları keser, hafızada kullanılan alanları temizler, kısacası yaratılan birçok şeyi otomatik olarak kendiliğinden yok eder. Ancak diyelim ki scriptin çalışma süresince açılan geçici bir dosya söz konusu ise bu dosyanın silinme işlemini bir yıkıcı fonksiyona koyabiliriz. Burada dikkat edilmesi gereken nokta yıkıcı fonksiyon içerisinde herhangi bir kural dışı durum oluşturmamamızın gerektiğidir. Bu durumun oluşması halinde PHP motoru "fatal error" hatası verecektir.

Klavyeyle gezinmek için ← ve → tuşları.