0

PHP オブジェクトの継承用に、次の小さなテスト スクリプトを作成しました。

<?php

class A {
    protected $attr;

    public function __construct($attr) {
        $this->$attr = $attr;
    }

    public function getAttr() {
        return $this->attr;
    }
}

class B extends A {

}

$b = new B(5);
echo $b->getAttr();

これは何も表示しません!表示されないのはなぜ5ですか? クラスBはクラスAのようになるはずではありませんか?

4

2 に答える 2

4

エラーは次のとおりです。

$this->$attr = $attr;

$this->{5}ここで(の値)に割り当てます$attr

プロパティに対処するには、次のように記述します。

$this->attr = $attr;
//     ^------ please note the removed `$` sign

このような場合に何が起こっているかを確認するには、オブジェクトをダンプしてみてください。var_dump($b);

于 2013-06-16T13:50:18.157 に答える
2

変数に直接アクセスする代わりに、変数変数を使用しています

 $this->$attr = $attr;
        ^
        |----- Remove This

 $this->attr = $attr;
于 2013-06-16T13:49:46.967 に答える