Ebeveyn özellikleri ve PHP geçersiz yöntemleri erişme

2 Cevap php

Ben aşağıdaki gibi ebeveyn ve çocuk sınıfları var:

abstract class ParentObj {
    private $data;
    public function __construct(){
        $this->data = array(1,2,3);
        var_dump($this->data);

        $this->method();
    }
    public function method(){
        echo "ParentObj::method()";
    }
}
class ChildObj extends ParentObj {
    public function __construct(){
        parent::__construct();
        var_dump($this->data);
    }
    public function method(){
        echo "ChildObj::method()";
    }
}

Beklenen çıkışı:

array(1,2,3)
ChildObj::method()
array(1,2,3)

Gerçek çıktı:

array(1,2,3)
ParentObj::method()
NULL

Sorun alt nesne veri özelliğine erişemez ve ebeveyn çocuğun geçersiz kılınmış bir yöntemi çağırmak için reddediyor, olduğunu.

Ben yanlış bir şey yapıyorum, ya da herkes herhangi bir fikir var mı?

EDIT: I $child = new ChildObj() gibi bir ChildObj başlatmasını olduğumu açıklamak gerekir

2 Cevap

Tamam, sorun yöntemler aslında böylece $ veri özelliği olarak aynı belirti acı, benim sonrası kamu, özel değil ilan edildi oldu.

Sen ChildObj erişmek mümkün olmayacaktır data özel olarak, yani ilan ettik - bunu yerine korumalı yapmak gerekir:

protected $data;

Benim PHP (5.2.8) baskılar ChildObj::method() - Eğer eski bir sürümünü çalıştırıyorsunuz?