Genişletilmiş PHP sınıfa değişken geçmek

2 Cevap php

Ben bir süre için şimdi PHP OOP kullanılarak oldum, ama nedense toplam beyin erime yaşıyorum ve burada yanlış neler çalışamaz!

Ben çok daha karmaşık bir sınıf var, ama daha basit bir test için bir tane, ve hatta bu çalışmıyor yazdı ...

Herkes yanlış ne yapıyorum bana söyleyebilir?

class test
{
    public $testvar;

    function __construct()
    {
       $this->testvar = 1;
    }
}

class test2 extends test
{
    function __construct()
    {
        echo $this->testvar;
    }
}

$test = new test;
$test2 = new test2;

Ben yapmaya çalışıyorum tüm alt sınıf üst sınıftan bir değişken geçmek olduğunu! Ben sadece $this->varName uzantısı $varName almak için kullandım geçmişte yemin?

Teşekkürler!

2 Cevap

Sen çocuk sınıfın kurucusundan üst sınıfın kurucusunu çağırmak zorunda.

Bu demektir ki, senin durumunda, sizin test2 class sonra olacak:

class test2 extends test
{
    function __construct()
    {
        parent::__construct();
        echo $this->testvar;
    }
}

Daha fazla bilgi almak için, size soru hakkında, devletler Constructors and Destructors kılavuzun sayfasında, bir göz atabilirsiniz:

Note: Parent constructors are not called implicitly if the child class defines a constructor. In order to run a parent constructor, a call to parent::__construct() within the child constructor is required.


You can use $this->varName : this is not a problem ; consider this code :

class test {
    public $testvar = 2;
    function __construct() {
       $this->testvar = 1;
    }
}
class test2 extends test {
    function __construct() {
        var_dump($this->testvar);
    }
}
$test2 = new test2;

Çıktısı:

int 2

"Varsayılan" bir değer olan $testvar.

Bu sorun, bu özelliğine erişemez değil demektir: Sorun, burada, ana sınıfının yapıcı denir olmamıştır sadece olmasıdır.

Sizin test2 class aramalısınız

parent::__construct()

onun kurucu.