Sınıflar ve Nesneler (PHP 5)
PHP Manual

Temel Kavramlar

class Anahtar Sözcüğü

Her sınıf tanımı class anahtar sözcüğü ile başlar sınıf isminin ardından gelen bir çift kaşlı ayracın arasında sınıf üyelerinin ve yöntemlerinin tanımları bulunur. Bir nesne bağlamı içinden bir yöntem çağırmak için $this diye bir sözde değişken kullanılır. $this çağrılan nesneye bir gönderimdir (normalde yöntemin ait olduğu nesnedir, ancak eğer nesne diğer nesnenin bağlamından duruk olarak çağrılıyorsa, bu başka bir nesne de olabilir).

Sınıf ismi olarak bir anahtar sözcük kullanılamaz ve bir sınıf ismi başına bir dolar simgesi konulmaması dışında PHP'de değişken isimlendirme kurallarına uygun olmalıdır.

Bu örnekte sınıf oluşturma, nesne olarak örnekleme ve $this sözde değişkeninin kullanımı gösterilmiştir:

Örnek 1 - Nesne yönelimli dilde $this değişkeni

<?php
class A
{
    function 
foo()
    {
        if (isset(
$this)) {
            echo 
'$this tanımlı (';
            echo 
get_class($this);
            echo 
")\n";
        } else {
            echo 
"\$this tanımsız.\n";
        }
    }
}

class 
B
{
    function 
bar()
    {
        
A::foo();
    }
}

$a = new A();
$a->foo();
A::foo();
$b = new B();
$b->bar();
B::bar();
?>

Yukarıdaki örneğin çıktısı:

$this tanımlı (A)
$this tanımsız.
$this tanımlı (B)
$this tanımsız.

Örnek 2 - Basit sınıf tanımı

<?php
class BasitSınıf
{
    
// üye bildirimi
    
public $değer 'bir öntanımlı değer';

    
// yöntem bildirimi
    
public function değerGöster() {
        echo 
$this->değer;
    }
}
?>

Öntanımlı değer, (örneğin) bir değişken, bir sınıf üyesi veya bir işlev çağrısı değil, bir sabit ifade olmalıdır.

Örnek 3 - Sınıf üyesinin öntanımlı değeri

<?php
class BasitSınıf
{
    
// geçersiz üye bildirimleri:
    
public $var1 'merhaba '.'dünya';
    public 
$var2 = <<<EOD
merhaba dünya
EOD;
    public 
$var3 1+2;
    public 
$var4 self::birDurukYöntem();
    public 
$var5 $birDeğer;

    
// geçerli üye bildirimleri:
    
public $var6 birSabit;
    public 
$var7 self::sınıfSabiti;
    public 
$var8 = array(truefalse);


}
?>

Bilginize: Sınıflar ve nesnelerle çalışmak için ilginizi çekebilecek bazı işlevler vardır. Bunlar için Sınıf/Nesne İşlevleri bölümüne bakabilirsiniz.

Duruk veri bağlamında yorumlanan çok satırlı metinler değil (heredoc), yorumlanmayan çok satırlı metinler (nowdoc) kullanılabilir.

Örnek 4 - Duruk veri örneği

<?php
class foo {
    
// PHP 5.3.0 ve sonrası
    
public $bar = <<<'EOT'
bar
EOT;
}
?>

Bilginize: Yorumlanmayan çok satırlı metin (nowdoc) desteği 5.3.0'da eklenmiştir.

new Anahtar Sözcüğü

Bir sınıfın örneğini oluşturmak için yeni bir nesne oluşturulup bir değişkene atanmalıdır. Nesnenin hata durumunda daima yeni bir değişkene atanarak oluşturulması için kurucusunun bir istisna oluşturmaması gerekir. Sınıflar, örnekleme öncesi tanımlanmış olmalıdır (ve bu, bazı durumlarda bir gereksinimdir).

Örnek 5 - Bir sınıf örneğinin oluşturulması

<?php
$örnek 
= new BasitSınıf();

// Bu bir değişkenle de yapılabilir:
$sınıf 'BasitSınıf';
$örnek = new $sınıf(); // BasitSınıf()
?>

Sınıf bağlamında yeni bir nesneyi new self veya new parent kullanarak oluşturmak mümkündür.

Oluşturulmuş bir sınıf örneğinin yeni bir değişkene atanması sırasında, yeni değişken, atanan nesneyle aynı örneğe erişecektir. Bu davranışın örneklerin bir işleve aktarılmasından bir farkı yoktur. Kopyalamak suretiyle oluşturulmuş bir nesnenin daima bir kopyası yapılabilir.

Örnek 6 - Nesne Atama

<?php
$atama     
=  $örnek;
$gönderim  =& $örnek;

$örnek->var '$atama bu değere sahip olacak';

$örnek null// $örnek ve $gönderim null olur

var_dump($örnek);
var_dump($gönderim);
var_dump($atama);
?>

Yukarıdaki örneğin çıktısı:

NULL
NULL
object(BasitSınıf)#1 (1) {
  ["var"]=>
  string(30) "$atama bu değere sahip olacak"
}

extends Anahtar Sözcüğü

Bir sınıfın bildiriminde extends anahtar sözcüğü kullanılarak başka bir sınıfın yöntemleri ve üyeleri miras alınabilir. Çok sayıda sınıfı miras alarak genişlemek mümkün değildir, bir sınıf sadece bir ana sınıfı miras alabilir.

Miras alınan yöntemler ve üyeler, ebeveyn sınıfta tanımlı isimleriyle yeniden bildirilerek geçersiz kılınabilir; bu sadece ebeveyn sınıfın final tanımlı yöntemleri için yapılamaz. Geçersiz kılınmış yöntemlere ve duruk üyelere parent:: öneki ile atıfta bulunarak erişilebilir.

Örnek 7 - Basit bir sınıfın miras alınması

<?php
class EkSınıf extends BasitSınıf
{
    
// ebeveyn yöntemi yeniden bildirelim
    
function değerGöster()
    {
        echo 
"Sınıf genişletiliyor\n";
        
parent::değerGöster();
    }
}

$ek = new EkSınıf();
$ek->değerGöster();
?>

Yukarıdaki örneğin çıktısı:

Sınıf genişletiliyor
bir öntanımlı değer

Sınıflar ve Nesneler (PHP 5)
PHP Manual