親クラスからプロパティにアクセスできる理由は理解できませんが、親によって既に設定されていてもNULLです。故意にリセットされていない)。そのプロパティは私的な方法で設定されているためかもしれないと思ったが、私がpublicに変更したときに違いはなかった。ここでは根本的に簡略化した例です:子メソッドからアクセスすると親メソッドによって親クラスのプロパティが空白に設定される
私は子供がnew TheChild($this->_parent_property)
すなわち親によって構築されたときに子供に、親プロパティを渡すことで、この問題を回避働いていたが、なぜ$この私はまだ理解していない - > _ parent_propertyです元の例の子からアクセスするとNULLに設定されます。
親コンストラクタからこのプロパティを設定した場合、私はそれをうまく利用することができます。私は親メソッドによって設定され、他の親メソッドからアクセス可能なプロパティが、親を拡張する子クラスからアクセスできない理由を理解しようとしています。
誰でも説明できますか?ありがとう!
返信いただきありがとうございます。親メソッドが呼び出されたときに親プロパティの値を渡していることを示すために私のサンプルを更新しました。あなたの答えに基づいて、最初にそれを子クラスに渡すことなくプロパティの元のparam値を保持することは不可能であると思いますか? –
@Calvin:あなたの関係は後ろにあり、 'TheChild'は' TheParent'から継承します。 'TheChild'を' TheParent'に拡張する場合は、セッターメソッドを 'TheChild'に公開するか、継承関係を削除し、 'TheParent'を' TheChild'(または必要な変数)に置き換えます –
これは静的変数と呼ばれています。なぜTheParentはTheChildをインスタンス化するのですか? –