Forum und email

매직함수 __sleep__wakeup

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

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

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

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