정상적인 클래스 생성자입니다. 우리가 생성자를 추가 한 때문에
보시다시피
class A {
protected $some_var;
function __construct() {
$this->some_var = 'value added in class A';
}
function echo_some_var() {
echo $this->some_var;
}
}
class B extends A {
function __construct() {
$this->some_var = 'value added in class B';
}
}
$a = new A;
$a->echo_some_var(); // will print out 'value added in class A'
$b = new B;
$b->echo_some_var(); // will print out 'value added in class B'
, 클래스 B가 클래스 멤버 $some_var
가에서뿐만 아니라 B.에서 액세스 할 수 있도록 A. 모든 가치와 기능을 상속의 다음 예를 살펴 보자
class C extends A {
// empty
}
$c = new C;
$c->echo_some_var(); // will print out 'value added in class A'
당신이 볼 수 있듯이, 우리가 가지고 있기 때문에 : 당신은 클래스 B의 새로운 객체를 생성 할 때 클래스 B에, 클래스 A의 생성자는
이제 다음 예를 살펴 사용되지 않습니다 생성자, c의 생성자를 선언하지 않았습니다. lass A는 암묵적으로 사용됩니다. 그러나 우리는 클래스 C에 해당 다음을 수행도 할 수 있습니다
class D extends A {
function __construct() {
parent::__construct();
}
}
$d = new D;
$d->echo_some_var(); // will print out 'value added in class A'
그래서 당신은 단지 당신이 뭔가를 자식 클래스의 생성자를 할 때 라인 parent::__construct();
을 사용하고, 부모 생성자를 실행해야합니다. 예 주어진 :
class E extends A {
private $some_other_var;
function __construct() {
// first do something important
$this->some_other_var = 'some other value';
// then execute the parent constructor anyway
parent::__construct();
}
}
자세한 내용은 여기에서 찾을 수 있습니다 : http://php.net/manual/en/language.oop5.php
'생성자'에 대해 알아보십시오. –
parent :: __ construct() SubClass 생성자 [Doc] (http://php.net/manual/fr/language.oop5.decon.php) – Bora
음, 나는 생성자가 무엇인지 알고 있습니다. 클래스가 시작될 때 자동으로 실행되는 마술 메서드 중 하나입니다.하지만 결과가 Codeigniter와 크게 다르지 않은 것으로 판단되면 선언하지 않으면 차이점이 있습니다. –