객체지향언어로서의 PHP – 4.소멸자

소멸자(destructor)란?

객체지향언어에서는 생성된 객체가 사라질 때 수행해야 할 일을 소멸자 내에서 처리하도록 되어 있습니다. 클래스가 상속관계에 있을 때에 각 클래스에 있는 소멸자의 실행순서는 생성자와 반대로 동작하게 됩니다. 즉, 파생클래스의 소멸자가 먼저 실행된 다음에 부모클래스의 소멸자가 순서대로 실행됩니다.

PHP3에서의 소멸자

PHP3에서는 소멸자를 지원하지 않습니다. 따라서 객체를 제거할 때에 수행해야 할 함수가 있다면 이를 수행할 수 있는 함수를 아래와 같이 작성할 수 있습니다.

unset() 함수에 의해 객체는 메모리에서 제거될 것입니다. 그러나 스크립트 종료 직전에는 unset() 함수를 사용할 필요는 없습니다. 스크립트의 실행이 종료되면 객체들도 자동적으로 제거됩니다.

PHP3에서의 소멸자 구현

객체 생성할 때 register_shutdown_function() 함수를 이용해 전역함수를 작성한 후 이 전역함수 내에서 스크립트가 종료될 때 수행될 최하위 파생클래스에 대한 소멸자를 실행하세요.

클래스가 상속관계에 있을 때에 각 클래스에 있는 소멸자의 실행순서는 파생클래스의 소멸자가 먼저 실행된 다음에 부모클래스의 소멸자가 순서대로 실행된다는 사실에 주의하세요. 따라서 아래와 같이 현재 클래스의 소멸자에서 처리할 내용을 먼저 수행한 후에 부모클래스의 소멸자를 수행하도록 작성하여야 합니다.

PHP4에서의 소멸자

PHP3와 마찬가지로 소멸자를 지원하지 않습니다.

답글 남기기