Bu sayfadaki yazılar
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ı.
Sayfa 50
Giriş
Merhaba sevgili Plazma okurları.
Geçen bölümde PHP diline bir giriş yapmıştık. PHP'nin sunucu tarafında çalışan bir dil olmasına değinmiş ve PHP dilini bazı istemci tarafında çalışan dillerle mukayese etmiştik. İlk program örneklerinin ardından "Değişkenler" ve "Fonksiyonlar" gibi iki önemli başlığı işlemiş ve bu noktada yazımıza noktayı koymuştuk.
PHP yazı dizisinin ikinci bölümü olan bu bölümde sınıflar konusunu işleyeceğiz.
Şekil 1.
PHP Dilinde Sınıf (Class) Kullanımı
PHP 4 versiyonunda örnek bir sınıf aşağıdaki gibi tanımlanmakta ve kullanılmaktadır.
PHP 4'te Film sınıfı:
<?php class Film 1 var var $fragman; var $sureDakika;
function Film($filmIlsim $filmFragman $filmSureDakika
mn ,
0)
$this->isim $filmIsim; $this->fragman - $filmFragman; $this->sureDakika $filmSureDakika;
function uzunluk() if($this->sureDakika < 30) return "Kisa film"; else if($this->sureDakika < 90) return "Normal sureli film"; else return "Uzun film";
)
$jackass2 new Film("Jackass II", "jİtm2.avi", 95); "Film Asmi: "film Sutesi: <br>"; echo "film uzunlugu:
echo echo
"<br>"; dk.
PHP 5 ile birlikte sınıflara birçok yeni özellik eklendi. Artık yukarıdaki örnek şu şekilde tanımlanmaktadır.
PHP 5'te Film sınıfı:
<?php class Film 1 private $isim; private $sureDakika; private $fragman;
püblie funetion gonstruct (Şfilmisim $filmFragman $filmSureDakika
mu ,
mu ,
0)
$filmIsim; $filmFragman;
$filmSureDakika;
$this->isim $this->fragman $this->sureDakika
)
public function uzunluk() 1 if($this->sureDakika < 30) return "Kisa film"; else if($this->sureDakika < 90) return "Normal sureli film"; else return "Uzun film";
j
public function okulsim()
1 )
return Şthis->isim;
public function 1
)
return $this->sureDakika;
)
$jackass2 new Film("Jackass II", 95); ismi: ".$Şjackass2->okulsiml() . "<br>"; "film suresi: ".$jackass2->okuSureDakikal). NV
"Film uzunlugu:
echo echo
echo ?>
* Şjackass2->uzunluki();
PHP 4 ve PHP 5 arasındaki temel farklar şunlardır.
PHP 4'te sınıfların constructorları sınıf ile aynı ismi taşıyan fonksiyonlar ile tanımlanırlar. PHP 5'te ise bu iş için "__construct" isimli sabit fonksiyonlar kullanılmaktadır.