ana sayfa > PHP > PHP5 | Sınıflar (class): Temel

PHP5 | Sınıflar (class): Temel

Pazar, 11 Nis 2010

Sınıf (class) Yapısı
Her sınıf tanımlaması bir anahtar sınıf ile başlar, bunu sınıf ismi takip eder ve bu PHP‘ nin kullandığı bir isim olmamalıdır. Bunu sınıfın üyeleri ve metodlar takip eder. Bir takma ad almış olan değişken, $this ile bir nesne içeriğinden metod çağırıldığı zaman kullanılabilir. $this çağırılan nesnenin referansıdır (genellikle metodun ait olduğu nesnedir, ama metod ikinci bir nesnenin içeriğinden sabit olarak çağırılırsa (statically) başka bir nesne de olabilir.)

Bunun örneğini şöyle verebiliriz:

<?php

class A

{

   function foo()

   {

       if (isset($this)) {

           echo '$this tanimlanmistir (';

           echo get_class($this);

           echo ")n";

       } else {

           echo "$this tanimlanmamistir.n";

       }

   }

}

class B

{

   function bar()

   {

       A::foo();

   }

}

$a = new A();

$a->foo();

A::foo();

$b = new B();

$b->bar();

B::bar();

?>

Bu örneğin çıktısı şu olacaktır:

$this tanimlanmistir (a)
$this tanimlanmamistir.
$this tanimlanmistir (b)
$this tanimlanmamistir.

Örnek: Basit sınıf (Simple Class) tanımlanması

<?php

class BasitBirSinif

{

   // sınıfa eleman tanımlama

   public $degisken = 'bir sabit deger';

   // sınıfa metod tanımlama

   public function displayVar() {

       echo $this->var;

   }

}

?>

Bir nesnenin bir örneğini yaratmak için, yeni bir nesne yaratılmalıdır ve bir değişkene bağlanmalıdır. Bir nesne yeni bir nesne oluşturulurken her zaman bağlanmalıdır yoksa sürekli hata veren (exception error) bir kurucuya sahip olur (constructor).

Örnek: Bir örnek (instance) yaratmak

<?php
$ornek = new BasitBirSinif()
?>

Bir nesnenin daha önceden yaratılmış bir örneğini yeni bir değişkene bağlarken, yeni değişken bağlanmış olduğu nesnenin aynı örneğine erişecektir. Bu davranış, örneklerden fonksiyonlara geçişte de aynıdır. Zaten yaratılmış bir nesnenin yeni bir örneği onu klonlayarak yapılabilir.

Örnek : Nesne Bağlanması

<?php

$baglanmis  =  $ornek;

$referans  =& $ornek;

$ornek->var = '$baglanmis bu degeri alacak';

$ornek = null; // $ornek ve $referans bos deger alacak

var_dump($ornek);

var_dump($referans);

var_dump($baglanmis);

?>

Bu örnek şu çıktıyı verecektir:

NULL
NULL
object(BasitBirOrnek)#1 (1) {
["var"]=>
string(30) "$baglanmis bu degeri alacaktır"
}

Erişim

Bir sınıf, erişilecek olanın anahtar kelimelerini kullanarak başka bir sınıfın metod ve üyelerini devralabilir. Erişime birden çok sınıf açmak mümkün değildir, bir sınıf sadece bir sınıftan devralma yapabilir.

Alınan metodlar ve üyeleri, ana sınıf bir metodu aynı isimle bildirip son (final) olarak belirlemediği sürece önemsenmeyebilir. Önemsenmemiş metod ya da üyelere ana (parent) ile referans vererek erişmek mümkündür.

<?php

class DevralanSinif extends BasitBirSinif

{

   // ana metodu yeniden tanimlayin

   function displayVar()

   {

       echo "Sinifi devraliyorn";

       parent::displayVar();

   }

}

$devralindi = new DevralanSinif();

$devralindi->displayVar();

?>

Bu örnek şöyle çıktı verecektir:

Sinifi devraliyor
bir sabit deger

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

coders PHP

  1. şimdilik yorum yok.
  1. şimdilik geri bağlantı yok
  • RSS
  • Newsletter
  • Twitter
  • Facebook
  • MySpace
  • FriendFeed