2010-11-08 31 views
10

Olası Çoğalt:
PHP: self vs thisPHP'de bunun anlamı nedir?

Merhaba, beni PHP değişken adı $this anlamını kavramaktan yardımcı olabilir mi?

Yardımlarınız için teşekkür ederim.

+2

Olası yinelenen: http://stackoverflow.com/questions/151969/php-self-vs-this. Ayrıca, lütfen sorularda çok tatlı olmayın. ;) – birryree

+2

Bilgilerinizi 12 yaşında genişlettiğiniz için tebrikler! Ancak, bu soruyla alakalı olmadığı için, sorunu kaldırmak için sorunu düzenleyebilir misiniz? –

+0

Yığın Taşması üzerindeki insanların ne 'Ben 12 yaşındayım ve bu ne' anlamına gelir bilmiyorum. – JAL

cevap

16

$this. Bulunduğunuz sınıfın atıfta Örneğin

için

Class Car { 

    function test() { 
     return "Test function called"; 
    } 

    function another_test() { 
     echo $this->test(); // This will echo "Test function called"; 
    } 
} 

Umut bu yardımcı olur.

+0

Bu, kendini referans almanın bir yolu ... veya yöntemleri çağırmaktır veya değişkenleri kendi başından okuyarak. – jodm

+5

aslında, kendiniz içinde bulunduğunuz sınıfa karşılık gelir. $ Bu, bulunduğunuz sınıfın geçerli nesne örneğini ifade eder. –

+0

Bu "yankılanmaz" sınaması "' sınamaya eriştiğinizden beri sınama işlevi " "Test()" yöntemine ters olarak üye değişkeni (var olmayan). Bunu "echo $ this-> test()" olarak değiştirmelisiniz ... – ircmaxell

1

$this Bir nesne içinde kullanılan korumalı bir değişkendir, $this dahili bir sınıf dosyasına erişmenizi sağlar.

Örnek

Class Xela 
{ 
    var age; //Point 1 

    public function __construct($age) 
    { 
     $this->setAge($age); //setAge is called by $this internally so the private method will be run 
    } 

    private function setAge($age) 
    { 
     $this->age = $age; //$this->age is the variable set at point 1 
    } 
} 

Onun temelde bir değişken kapsamı sorunu, $this sadece başlatılan ve bu nesne ile ilgilidir ve veliler sadece, sen özel yöntemler ve set özel değişkenleri çalıştırabilirsiniz olan bir nesne içinde izin verilir dışarı taraf olarak dışarıda olamaz. o sınıfında içinde statik yöntemlere atıfta dan

da self kelime dışında çok benzer, statik temelde o setAge yöntem statik ilan edilir eğer, henüz değil bir nesne olarak $this cant'kullanma Eğer self::setAge(); kullanmalı ve anlamı

+0

Anladığım kadarıyla, bir OOP yeni başlayanına açıklıyorsunuz, lütfen nesnelere sınıf olarak bakmayın. $ bu, nesne özellikleri ve yöntemlerine başvurmak için kullanılırken, self :: class özelliklerine ve yöntemlerine başvurmak için kullanılır. Sanırım ikisi arasındaki farkı açıklamak önemlidir. – Craige