2016-09-17 1 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 변수를 업데이트하려고하지만 부모 클래스 변수에서 액세스하려고합니다. 작동

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

을하지만이 작동하지 않습니다 만 $parent::$amount (정적) :

class Child_Class extends Parent_Class { 

    public function __construct() { 

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

} 

문제

내가이 같은 데이터에 액세스하기 위해 노력하고 있다는 점이다. 그것이 비 정적 변수로 작동하게하는 방법이 있습니까? 내가 자식 클래스에 몇 가지 작업을하고 난 당신이 어떻게 클래스 작업에 대한 혼란이라고 생각

$parent->amount; 

답변

2

를 통해 업데이트 된 금액을 반환해야

$parent = new Parent_Class(); 

:

는 SO 내 부모 클래스에서 initated되었다

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

다시 신고하지 않으려는 경우 $amount i n 귀하의 자녀와 귀하의 부모 클래스는 그 가치에 대해서만 본다 (즉, self::$amount). 귀하의 자녀는 private이 아닌 모든 것을 상속 받으실 수 있습니다.

$this->amount = 50; 
+0

본인은 수업에 익숙하지 않으므로 양해 해주십시오. 내가 뭘 하려는지 부모에 변수를 덮어 씁니다 그래서 부모로부터 액세스 할 수 있습니다. 예 : 부모 금액 = 0, 금액 변경을 하위 클래스 내에서 만들려고하지만 부모로부터 여전히 금액에 액세스합니다. 나는 $ this-> amount = 50을 시도했지만 부모 양인 0을 반환합니다. 그래서 나는 금액을 재교부하려고 노력하고 있다고 생각하니? 나는 약간 혼란 스럽다. –

+0

나는 실제로 부모 클래스 인 양 (child amount)으로부터 금액을 갱신하려고 시도하고 있으며, 자식으로부터 만 접근하려하지 않는다. 희망이있다 : –

+0

당신의 자식 클래스가 스스로 인스턴스화 될 때 그것은 부모와 모든 메소드를 암시 적으로 인스턴스화한다. 그래서 그들을 재 선언하거나 따로 설정할 필요가 없습니다. – Machavity

관련 문제