-1

私はそのようなことを意味します:

class parentClass {
    public function method() {
        echo $this->prop;
    }
}
class childClass extends parentClass {
    public $prop = 5;
}

親プロップから子プロップを取得するにはどうすればよいですか?

ありがとう...

4

3 に答える 3

2

あなたが何を望んでいるかを完全には理解していないか、解決策が次のコードと同じくらい簡単です。

class parentClass {
    public function method() {
        echo $this->prop;
    }
}
class childClass extends parentClass {
    public $prop = 5;
}
$object = new childClass();
$object->method();

子クラスが基本クラスを拡張していることを意味します。つまり、親クラスのすべてのメソッドも継承します。これにより、親のクラス メソッドを使用するプロセス全体が、子クラスのインスタンスから呼び出すのと同じくらい簡単になります。

于 2012-07-01T22:29:55.560 に答える
1

子クラスのすべての保護されたメンバーとパブリック メンバーは、PHP の親クラス内から表示されるため、提供されたサンプル コードは問題なく動作するはずです。PHPドキュメントからの引用

保護されていると宣言されたメンバーは、クラス自体内で、継承されたクラスおよび親クラスによってのみアクセスできます。

しかし、実際の問題は次のとおりです。本当にそれが必要ですか?

オブジェクト指向の適切な方法は、何かを表現する自己完結型の親クラスを定義することです。子クラスのプロパティにアクセスする必要はありません。これはいわゆるコードの匂いです。同様の構造が必要な場合があると本当に思うなら、おそらくすべての子クラスがこのプロパティを持つことを保証する抽象メソッドを探しているでしょう:

abstract class Animal {
    public function makeNoise() {
        echo $this->getNoiseString();
    }
    protected abstract function getNoiseString();
}

class Cat extends Animal {
    protected function getNoiseString() {
        return 'meow';
    }
}
于 2012-07-01T22:27:18.200 に答える
0
//parent
class parentClass {

    protected $prop = null;

    public function method() {
        echo $this->prop;
    }
}

//child
class childClass extends parentClass {
    protected $prop = 5;
}

変数が親クラスでも定義されていることを確認してください。そのため、保護者がアクセスできるようになります。

于 2012-07-01T22:27:15.533 に答える