2013-07-30 1 views
0

간단한 프레임 워크를 만들려고 MVC를 실험하고 있습니다. 이것은 내가 뭘하는지의 예입니다현재 클래스가 부모 클래스에서 인스턴스화 된 경우 부모 클래스 속성에 액세스하는 방법

<?php 
require_once('config.php'); //Here I have the Config object 
class App{ 
    protected $config; 
    protected $controller; 
    public function init(){ 
     $this->config = new Config; 
     $this->controller = new Main_Controller; 
    } 
} 
class Main_Controller extends App{ 
    public function __construct(){ 
     var_dump($this->config); 
    } 
} 
$app = new App; 
$app->init(); 

문제는 내 위해서 var_dump는 NULL을 반환된다, 그래서 왜 안 Main_Controller 독서는 응용 프로그램의 속성입니다?

답변

0

자식 생성자 클래스가 생성자를 정의하면 부모 생성자가 암시 적으로 호출되지 않습니다. 부모 생성자를 실행하려면 자식 생성자 내에서 parent :: __ construct()를 호출해야합니다. 자식이 생성자를 정의하지 않으면 일반 클래스 메소드와 마찬가지로 부모 클래스에서 상속 될 수 있습니다 (private로 선언되지 않은 경우).

+0

음, 문제는 내 App 클래스에 생성자가 없으므로 parent를 사용해서는 안된다는 것입니다. :: __ construct(); 그 기능이 존재하지 않기 때문에 내 Main_Controller 클래스에. 또한 나는 그것이 Main_Controller 내부의 고전적인 함수에 var_dump를 놓은 다음 Main_Controller를 인스턴스화하기 전에 App에서 바로 호출하기 때문에 모든 App 속성에 대해 여전히 NULL을 얻고 있기 때문에 생성자와 관련이 있다고 생각하지 않습니다. – enzo

+0

내가 게시 한 텍스트는 php5 documentation verbatum에서 직접 가져온 것으로 인스턴스 메소드가 초기화되지 않을 수도 있다고 생각하는 유일한 방법입니다. Php'ers 밖에서 누구나 명확히 할 수 있습니다. –

관련 문제