PHP 매뉴얼
이전 | 13. 장. 클래스와 객체 | 다음

# 매직함수 `__sleep`와 `__wakeup`

serialize()는 클래스가 `__sleep`라는 매직 이름을 갖는 함수를 갖는지 체크한다. 이 함수를 갖고있다면, 일렬화되기 전에 이 함수가 수행된다. 이 함수는 객체를 깨끗하게 비울수 있고, 일렬화되어야 하는 그 객체의 모든 변수명을 갖는 배열을 돌려준다.

`__sleep`의 의도된 사용은 그 객체가 소유할지도 모르는 모든 데이터베이스의 접속을 종료하고, 아직 수행되지 않은 커밋(commit) 을 수행하거나 청소작업을 수행한다. 또한, 완전히 저장할 필요가 없는 매우 거대한 객체를 갖고 있다면 이 함수를 유용하게 쓸수 있다.

반대로, unserialize()는 `__wakeup`라는 매직 이름을 갖는 함수의 존재를 체크한다. 이 함수가 존재하면, 객체가 갖고 있을지도 모르는 모든 자원을 해제할수 있다.

`__wakeup`의 의도된 사용은 일렬화동안에 소실될수 있는 모든 데이터베이스 접속을 재구축하고 다른 재초기화 작업을 수행 한다.

이전 | 처음으로 | 다음
객체 일렬화 - 세션 내의 객체 | 위로 | 생성자의 재참조