2

子クラスは親のプロパティを継承するという印象を受けました。ただし、以下はクラス B の出力 null です...親クラスからプロパティにアクセスする方法を誰か教えてもらえますか?

$aClass = new A();
$aClass->init();

class A {

    function init() 
    {
        $this->something = 'thing';
        echo $this->something; // thing
        $bClass = new B();
        $bClass->init();
    }

}

class B extends A {

    function init() 
    {
        echo $this->something; // null - why isn't it "thing"?
    }
}
4

3 に答える 3

4

コードにいくつかのエラーがあります。私はそれらを修正しました。次のスクリプトは期待どおりに動作するはずです。コードのコメントがお役に立てば幸いです。

class A {

    // even if it is not required you should declare class members
    protected $something;

    function init() 
    {
        $this->something = 'thing';
        echo 'A::init(): ' . $this->something; // thing
    }

}

// B extends A, not A extends B
class B extends A {

    function init() 
    {
        // call parent method to initialize $something
        // otherwise init() would just being overwritten
        parent::init();
        echo 'B::init() ' . $this->something; // "thing"
    }
}


// use class after(!) definition
$aClass = new B(); // initialize an instance of B (not A)
$aClass->init();
于 2013-04-06T18:24:50.977 に答える
1

定義された 2 番目のクラスは でありclass B extends A、 ではありませんclass A extends B

于 2013-04-06T18:21:09.627 に答える
0

次の構文を使用して、PHP で親クラスのメンバーにアクセスします。

parent::$variableName

または

parent::methodName(arg, list)

于 2013-04-06T18:23:47.260 に答える