[php] 생성자
생성자
생성자란?
생성자(constructor)는 클래스의 새로운 인스턴스가 생성될 때 자동적으로 호출되는 클래스 내의 함수이며, __constructor() 매직함수로 구현됩니다.
class Cart {
public $items; // Items in our shopping cart
// Add $num articles of $artnr to the cart
public function add_item ($artnr, $num) {
$this->items[$artnr] += $num;
}
// Take $num articles of $artnr out of the cart
public function remove_item ($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
class Auto_Cart extends Cart {
public function __constructor() {
$this->add_item ("10", 1);
}
}
위의 예제는 클래스 Auto_Cart가 new 연산자로 만들어질 때마다 품목번호 "10"의 수량이 1을 갖도록 장바구니를 초기화시키는 생성자를 새로이 포함하여 정의하였습니다.
생성자에 전달되는 인자
생성자는 필요하면 선택적으로 인자(argument)를 전달할 수도 있기 때문에 매우 유용하게 사용됩니다.
class Constructor_Cart extends Cart {
public function __constructor($item = "10", $num = 1) {
$this->add_item ($item, $num);
}
}
// Shop the same old boring stuff.
$default_cart = new Constructor_Cart;
// Shop for real...
$different_cart = new Constructor_Cart ("20", 17);
부모 클래스의 생성자 호출(parent::)
부모클래스의 생성자를 호출 할경우 parent::__construct(); 를 이용합니다.
class Foo {
public function __construct($lol, $cat) {
// Do stuff specific for Foo
}
}
class Bar extends Foo {
public function __construct() {
parent::__construct("lol", "cat");
// Do stuff specific for Bar
}
}