Sınıflar ve nesneler (PHP 4)
PHP Manual

Etki Alanı Çözünürlük İşleci (::)

Dikkat

Aşağıdakiler sadece PHP 4 ve sonrası için geçerlidir.

Ebeveyn sınıfın işlev ve değişkenlerine atıf yapmak veya henüz örneklenmemişken bir sınıfın işlevlerini çağırmak bazen gerekebilir. Bu amaçla :: işleci kullanılır.

<?php
class {
    function 
misal() {
        echo 
"Ben özgün A::misal() işleviyim.<br />\n";
    }
}

class 
extends {
    function 
misal() {
        echo 
"Ben B::misal() olarak yeniden tanımlandım.<br />\n";
        
A::misal();
    }
}

// A sınıfının örneği yok. Şunu basar:
// Ben özgün A::misal() işleviyim.<br />
A::misal();

// B sınıfının bir nesnesini oluşturalım.
$b = new B;

// Şunlar basılır
//   Ben B::misal() olarak yeniden tanımlandım.<br />
//   Ben özgün A::misal() işleviyim.<br />
$b->misal();
?>

Bu örnekte, A sınıfının misal() işlevi çağrılmaktadır. Fakat A sınıfının bir nesnesi olmadığından işlevi $a->misal() ve benzeriyle çağıramayız. Bunun yerine misal() işlevini bir 'sınıf işlevi' olarak, yani bir sınıf örneğinin değil sınıfın kendi işlevi olarak, çağırırız.

Sınıf işlevlerinin olmasına karşın sınıf değişkenleri yoktur. Aslında çağrı sırasında bir nesne dahi yoktur. Bu bakımdan, bir sınıf işlevi hiçbir nesne değişkenini kullanamaz (fakat yerel ve küresel değişkenleri kullanabilir) ve $this de hepsinde kullanılamayabilir.

Yukarıdaki örnekte B sınıfı misal() işlevini yeniden tanımlamaktadır. A sınıfındaki özgün tanım geçersiz kılındığından, yeni işlev içinden :: işleci A::misal() biçeminde kullanılarak açıkça çağrılmadıkça B sınıfından erişilebilir olmayacaktır. Aslında, çağrıyı (sonraki bölümde göreceğiniz gibi) parent::misal() biçeminde yapmak daha uygundur.

Geçerli bir nesnenin olduğu ve bu nesnenin de nesne değişkenlerinin olduğu bağlamda bir nesne işlevi içinde $this sözde değişkenini ve diğer nesne değişkenlerini kullanabilirsiniz.


Sınıflar ve nesneler (PHP 4)
PHP Manual