본문 바로가기
PHP/Python/Ruby

PHP 매직함수 - Class

본문

__sleep, __wakeup과 같이 "__"로 시작하는 매직함수(magic function)는 PHP 클래스 내에서 특수한 목적으로 사용됩니다. 따라서 이 함수들이 가지고 있는 문서화된 매직 기능을 사용할 필요가 없다면 클래스 내에 이 함수들을 정의해서는 안됩니다.
 
__sleep
 
serialize 함수를 통해 객체를 직렬화할 때 해당 클래스에 매직 함수 __sleep가 정의되어 있는지 확인합니다. 만약 정의되어 있다면 객체를 직렬화하기 전에 __sleep 함수를 수행합니다. 이 함수는 직렬화하기 전에 객체 멤버에 대하여 조작해야 하는 작업, 또는 직렬화하기 전에 미리 수행해야 하는 작업(예를 들어 데이터베이스 연결 종료 등)을 수행할 수 있습니다. __sleep 함수는 직렬화할 객체의 모든 멤버변수의 이름을 변수에 담아 반환합니다.
 


class Scott {
  var $error;
  var $svar = array();

  function Scott() {
    $this->svar['Hello'] = "World";
  }

  function __sleep() {
    $this->svar['Hello'] = "Yawn";
    // return list of instance-variables to be serialized
    return array('error', 'svar');
  }
}

$x = new Scott();
print_r($x);
$y = serialize($x);
$z = unserialize($y);
print_r($z);

__wakeup
 
unserialize 함수를 통해 문자열을 객체화할 때 해당 클래스에 매직 함수 __wakeup가 정의되어 있는지 확인합니다. 만약 정의되어 있다면 객체화하기 전에 __wakeup 함수를 수행합니다. 이 함수를 수행할 때 객체화하기 전에 객체를 상대로 수행해야하는 작업, 또는 객체화하기 전에 미리 수행해야 하는 작업(예를 들어 데이터베이스 연결 등)을 수행할 수 있습니다.
 


class Scott {
  var $error;
  var $svar = array();

  function Scott() {
    $this->svar['Hello'] = "World";
  }

  function __sleep() {
    $this->svar['Hello'] = "Yawn";
    // return list of instance-variables to be serialized
    return array('error', 'svar');
  }

  function __wakeup() {
    $this->svar['test'] = "I'm here!";
  }
}

$x = new Scott();
print_r($x);
$y = serialize($x);
$z = unserialize($y);
print_r($z);
  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기

페이지 정보

최고관리자 작성일13-02-07 11:32 조회1,062회 댓글0건

첨부파일


Warning: include_once(G5_CAPTCHA_PATH/captcha.lib.php) [function.include-once]: failed to open stream: No such file or directory in /home/hosting_users/winmate/www/bbs/view_comment.php on line 3

Warning: include_once() [function.include]: Failed opening 'G5_CAPTCHA_PATH/captcha.lib.php' for inclusion (include_path='/home/hosting_users/winmate/www/plugin/htmlpurifier/standalone:.:/usr/local/php/lib/php') in /home/hosting_users/winmate/www/bbs/view_comment.php on line 3

댓글목록

등록된 댓글이 없습니다.

PHP/Python/Ruby 목록

게시물 검색

사이트 정보

  • 회사명 주인있소 / 대표 소담
  • 주소 강원도 속초시
  • 사업자 등록번호 123-45-67890
  • 전화 010-2026-0626 / 팩스 없음
  • 통신판매업신고번호 제 OO구 - 123호
  • 개인정보관리책임자 정보책임자명

고객센터

상단으로