생성자
PHP 5에서는 개발자가 클래스의 생성자로 메서드를 정의할 수 있습니다. 생성자가 있는 클래스는 객체가 생성될 때마다 이 메서드를 호출하므로 객체를 사용하기 전에 일부 초기화 작업을 수행하는 데 매우 적합합니다.
참고:
생성자가 하위 클래스에 정의된 경우 상위 클래스의 생성자는 비밀리에 호출되지 않습니다. 상위 클래스의 생성자를 실행하려면 하위 클래스의 생성자에서 parent::__construct()를 호출해야 합니다. (??다른 언어와는 확실히 다릅니다??)
예제 10.8. 새로운 표준 생성자 사용
class BaseClass {
function __construct() {
print "In BaseClass constructorn"
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct()
print "In SubClass constructorn"; >$obj = new BaseClass();
$obj = new SubClass();
PHP 5는 이전 버전과의 호환성을 위해 클래스에서 __construct() 함수를 찾으려고 시도합니다. 스타일 생성자는 클래스와 동일한 이름을 가진 함수입니다. 따라서 호환성 문제가 발생하는 유일한 상황은 클래스에 이미 __construct()라는 메서드가 있지만 생성자가 아닌 경우입니다.
소멸자
PHP 5에서는 C 등 다른 객체지향 언어와 유사한 소멸자 개념을 도입했습니다. 소멸자는 객체에 대한 모든 참조가 제거되거나 객체가 명시적으로 소멸될 때 실행됩니다.
예제 10.9. 소멸자 예
class MyDestructableClass {
function __construct() {
print "In constructorn"; $this->name = "MyDestructableClass" }
function __destruct() {
print "Destroying " . $this->name .
}
}
$obj = new MyDestructableClass()
, 부모 클래스 소멸자는 엔진에 의해 암시적으로 호출되지 않습니다. 상위 클래스의 소멸자를 실행하려면 parent::__destruct()를 하위 클래스의 소멸자 본문에서 명시적으로 호출해야 합니다. (??분명히 다른 언어와 다르죠??)
참고:
소멸자는 스크립트가 닫힐 때, 즉 모든 헤더 정보가 방출될 때 호출됩니다.
참고:
소멸자에서 예외를 발생시키려고 하면 치명적인 오류가 발생합니다.
위 내용은 내용의 측면을 포함하여 PHP: 클래스 및 개체 3 생성자와 소멸자에 대한 기본 지식을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.