WEBD/PHP

Class 사용법 정리 7. 매직함수

라떼^^ 2020. 10. 2. 03:48

7. 매직함수 

 

__sleep, __wakeup과같이"__"로시작하는매직함수(magic function)는 PHP 클래스내에서특수한목적으로사용됩니다.

따라서이함수들이가지고있는문서화된매직기능을사용할필요가없다면클래스내에이함수들을정의해서는안됩니다.

 

__sleep

 

serialize 함수를통해객체를직렬화할때해당클래스에매직함수 __sleep가정의되어있는지확인합니다.

만약정의되어있다면객체를직렬화하기전에 __sleep 함수를수행합니다.

이함수는직렬화하기전에객체멤버에대하여조작해야하는작업,또는직렬화하기전에미리수행해야하는작업(예를들어데이터베이스연결종료등)을수행할수있습니다.

__sleep 함수는직렬화할객체의모든멤버변수의이름을변수에담아반환합니다.

classScott{

  var $error;

  var $svar = array();

 

functionScott(){

    $this->svar['Hello']="World";

  }

 

function __sleep(){

    $this->svar['Hello']="Yawn";

    // return list of instance-variables to be serialized

    return array('error','svar');

  }

}

 

$x =newScott();

print_r($x);

$y = serialize($x);

$z = unserialize($y);

print_r($z);

 

__wakeup

 

unserialize 함수를통해문자열을객체화할때해당클래스에매직함수 __wakeup가정의되어있는지확인합니다.

만약정의되어있다면객체화하기전에 __wakeup 함수를수행합니다.

이함수를수행할때객체화하기전에객체를상대로수행해야하는작업,또는객체화하기전에미리수행해야하는작업(예를들어데이터베이스연결등)을수행할수있습니다.

 

classScott{

  var $error;

  var $svar = array();

 

functionScott(){

    $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 =newScott();

print_r($x);

$y = serialize($x);

$z = unserialize($y);

print_r($z);

LIST