PHP 컨스트럭터와 디스트럭터
PHP/매뉴얼 번역 2008/06/19 17:11Constructor
PHP 5 에서는 개발자가 클래스의 컨스트럭터 메소드를 선언할 수 있다. 컨스트럭터메소드를 가진 클래스는 새로운 오브젝트가 생성될때마다 이 메소드를 호출한다. 이 호출에 의해서 오브젝트를 사용하기전에 필요한 초기화를 행할 수 있다.
새롭게 통합된 컨스트럭터 사용 예
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "In SubClass constructor\n";
}
}
$obj = new BaseClass();
$obj = new SubClass();
?>
하위 호환성을 유지하기 위하여 PHP 5 가 주어진 클래스에서 __construct() 함수를 찾을 수 없는 경우 구형식의 컨스트럭터 함수 , 즉 클래스 이름과 똑같은 함수를 찾게된다. 실제로 호환성의 문제가 발생할 가능성이 있는것은 주어진 클래스가 __construct() 라는 이름의 메소드를 가지고 있으며 다른 용도로 사용되고 있는 경우이다.
Constructor
PHP 5 에서는 C++ 같은 다른 오브젝트지향언어와 닮은 개념의 디스트럭터가 도입되었다. 디스트럭터메소드는 특정 오브젝트에의 모든 참조(레퍼런스)가 삭제된 직후 도는 오브젝트가 명시적으로 파기된 직후 호출된다. 또는 스크립트의 종료시에도 무작위로 호출된다.
디스트럭터 예class MyDestructableClass {
function __construct() {
print "In constructor\n";
$this->name = "MyDestructableClass";
}
function __destruct() {
print "Destroying " . $this->name . "\n";
}
}
$obj = new MyDestructableClass();
?>
컨스트럭터와 마찬가지로 부모클래스의 디스트럭터가 엔진에 의해 암묵적으로 호출되지 않는다. 부모클래스의 디스트럭터를 실행하기위해서는 디스트럭터내에서 명시적으로 parent::__destruct() 를 호출하여야 한다.
주의: 디스트럭터의 내부에서 (스크립트의 종료처리시에) 예외를 던지려고 하면 치명적인 에러를 일으킨다.
원문링크: http://www.php.net/manual/en/language.oop5.decon.php
목차로
PHP 클래스와 오브젝트 ( Classes and Objects ) PHP 5
'PHP > 매뉴얼 번역' 카테고리의 다른 글
| PHP 클래스의 추상화 (0) | 2008/06/19 |
|---|---|
| PHP 클래스 정수 (0) | 2008/06/19 |
| PHP static 키워드 (0) | 2008/06/19 |
| PHP 스코프 연산자(::) (0) | 2008/06/19 |
| PHP 억세스권(접근권한) : Visibility (0) | 2008/06/19 |
| PHP 컨스트럭터와 디스트럭터 (0) | 2008/06/19 |
| PHP 오브젝트의 오토로딩 (0) | 2008/06/19 |
| PHP 클래스의 기초 (0) | 2008/06/19 |
| PHP 클래스와 오브젝트 ( Classes and Objects ) PHP 5 (0) | 2008/06/19 |
| PHP 언어레퍼런스 예외(exceptions) (0) | 2008/06/17 |
| PHP ErrorException 클래스 (0) | 2008/06/17 |