2016-09-17 21 views
1

編集:子クラスから親クラス変数を設定/変更するにはどうすればよいですか?

大変申し訳ございません。私はちょうど、私の子クラスコールで親クラスを$ thisとして渡すことによってやっていることをやり遂げることができました。 $load = new Child_Class($this);かなり醜いですが、私の目的を果たしていることを確かめてください。

基本的な考え方は、いくつかの変数を持つ親クラスを作成しています。

class Parent_Class { 

    public $amount = 0; 
    public $user_id = 0; 

    public function __construct() { 

      // I load the child to do some work and update amount. 
      $load = new Child_Class(); 
    } 

} 

次に、私は子クラスを持っています。私は子クラス内から親クラス$ amount変数を更新しようとしていますが、親クラス変数からアクセスしています。

class Child_Class extends Parent_Class { 

    public function __construct() { 

     // How can I do this? 
     parent::$amount = 50; // update the amount in parent 
    } 

} 

の問題は、私はこのようなデータにアクセスしようとしているということです。

$parent = new Parent_Class(); 
$amount = $parent->amount; 

しかし、これは仕事だけ$parent::$amount(静的)な作品はありません。非静的変数として動作させる方法はありますか?私の親クラスがからinitatedた

はSO:

$parent = new Parent_Class(); 

私は、子クラスでいくつかの作業を行い、

$parent->amount; 

答えて

2

を介して更新量を返却する必要がある私はあなたのクラスがどのように機能するかについて混乱だと思います

parent::$amount = 50; // update the amount in parent 

再宣告しない限り、これを行う必要はありません$amount i nあなたの子供とあなたの親クラスは、その値のためだけに自分自身を見ます(つまり、 self::$amount)。あなたの子供は、privateでないものをすべて継承します。

$this->amount = 50; 
+0

私はクラスに慣れていませんので、私の無知を受け入れてください。私がしようとしているのは、親から変数に上書きして、親からアクセスできるようにすることです。例えば親の額= 0、私は子クラス内の金額の変更をしようとしているが、それでも親からそれにアクセスする。私は$ this-> amount = 50を実行しようとしましたが、親の量である0を返します。だから私は金額を再宣言しようとしていると思いますか?私は少し混乱しています –

+0

私は実際に子供のクラス(親にある金額)からの金額を更新しようとしており、子供からのみそれにアクセスしようとしていません。うまくいくと思います:) –

+0

あなたの子クラスがそれ自身をインスタンス化するとき、それは暗黙的に親とすべてのメソッドをインスタンス化します。だから、それらを再宣言する必要はない、あるいは別々に設定すること。 – Machavity

関連する問題