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;
가 실행되지 않습니다 것입니다. 상속 체인에 문제가 있습니까?
당신이 말한 것은 작동해야하지만 구문 오류가 있습니다. 'EchoHello extends ExtendBase','ExtendBase' 클래스가없고'ExtendsBase'와'private _options;'에 뭔가 빠졌습니다 :'private $ _options; ' – pNre
죄송합니다. 죄송 구문 오류가 발생했습니다. 이 유형의 상속이 효과가 있었다면 혼란 스러웠습니다. – LogicLooking
나는 그것을 시도하지는 않았지만 당신이 의도 한대로 (물론 오류없이) 어쩌면 원래 코드의 문제는 어딘가에있을 것이라고 확신한다. – pNre