2013-10-09 3 views
0

그래서 잠시 동안 생각해 봤고 내 init 함수가 전혀 작동하는지 궁금합니다. 이것은 Zend Framework에서 object initialization이라는 아이디어에 기인합니다.PHP에서 init 함수의 상속

class Base{ 
    public function __construct(){ 
     $this->init(); 
    } 

    public function init(){} 
} 

지금은 생성자에서 옵션 PARAM을 받아 들일 필요가있다이에서 클래스가 있다고 가정 할 수 있습니다 :

내가 같은 같은 기본 클래스가 있다고 가정 할 수 있습니다. 왜 부모 클래스에서 init 함수를 사용하지 않겠습니까?이 예제는 공유 할 수없는 실제 코드를 기반으로합니다.

class ExtendsBase extends Base{ 

    private $_options; 

    public function __construct($options){ 
     parent::__construct(); 
     $this->_options = $options; 
    } 

    // Why even instantiate this if never using it? 
    public function init(){ 
    parent::init(); 
    } 
} 

여기에서 우리는 이것을 확장하고 실제로 몇 가지를 초기화해야합니다.

class EchoHello extends ExtendsBase{ 

    public function init(){ 
     parent::init(); 
     echo "hello"; exit; 
    } 
} 

그리고 우리는이 작업을 수행 할 수 있어야한다 :

$someVar = new EchoHello(array()); 
// Instantiate should echo hello and exit. 

문제는 echo "hello"; exit;가 실행되지 않습니다 것입니다. 상속 체인에 문제가 있습니까?

+0

당신이 말한 것은 작동해야하지만 구문 오류가 있습니다. 'EchoHello extends ExtendBase','ExtendBase' 클래스가없고'ExtendsBase'와'private _options;'에 뭔가 빠졌습니다 :'private $ _options; ' – pNre

+0

죄송합니다. 죄송 구문 오류가 발생했습니다. 이 유형의 상속이 효과가 있었다면 혼란 스러웠습니다. – LogicLooking

+0

나는 그것을 시도하지는 않았지만 당신이 의도 한대로 (물론 오류없이) 어쩌면 원래 코드의 문제는 어딘가에있을 것이라고 확신한다. – pNre

답변

관련 문제