PHP 클래스의 매직 메서드는 다음과 같습니다. 1. 직렬화해야 하는 개체의 모든 변수 이름이 포함된 배열을 반환하는 "__sleep" 메서드 2. "__sleep"의 반대인 "__wakeup" 메서드 "; 3. "__tostring" 메서드는 클래스를 문자열로 처리할 때 출력할 내용을 반환합니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 5.6 이 방법은 모든 브랜드의 컴퓨터에 적합합니다.
추천: "PHP Video Tutorial"
Magic Methods of PHP Classes
PHP는 이중 밑줄(__)로 시작하는 모든 클래스 메소드를 매직 메소드로 예약하므로 클래스 메소드를 정의할 때 다음 매직을 제외하고 방법을 사용하는 경우 __로 시작하지 않는 것이 좋습니다.
__sleep: 직렬화해야 하는 개체의 모든 변수 이름이 포함된 배열을 반환합니다. serialize 함수는 클래스를 직렬화할 때 먼저 클래스에 __sleep 메서드가 있는지 확인합니다. 존재하는 경우 이 메서드는 직렬화 전에 호출됩니다. 그리고 __sleep이 반환한 배열의 속성만 직렬화됩니다. __sleep이 아무것도 반환하지 않으면 null이 직렬화되고 E_NOTICE 수준 오류가 생성됩니다. __sleep은 상위 클래스의 전용 멤버를 반환할 수 없습니다. 그렇지 않으면 E_NOTICE 수준 오류가 발생합니다. 이 방법은 규모가 크지만 모든 데이터를 보유할 필요는 없는 개체에 유용합니다.
__wakeup: __sleep과 달리 unserialize 함수는 클래스에 __wakeup 메서드가 있는지 먼저 확인하고 존재하는 경우 해당 메서드를 먼저 호출한 다음 deserialization 작업을 수행합니다. 역직렬화 또는 기타 초기화 작업 전에 개체에 필요한 일부 리소스를 준비하는 데 사용됩니다.
__tostring: 클래스가 문자열로 처리될 때 출력될 내용을 반환합니다. 이 메서드는 문자열을 반환해야 하며 이 메서드에서 예외를 발생시킬 수 없습니다. 그렇지 않으면 치명적인 오류가 발생합니다. PHP5.2 이전에는 echo와 print를 직접 사용할 때만 이 메서드가 적용되었습니다. 이후에는 __toString 메서드를 정의하지 않은 객체를 문자열로 변환하면 치명적인 오류가 발생합니다. 발생하다.
__invoke: PHP 5.3부터 이 메서드는 객체를 함수로 호출하려고 할 때 호출됩니다.
__set_state: PHP5.1부터 클래스를 내보내기 위해 var_export 함수가 호출될 때 이 정적 메서드가 호출됩니다. 이 메소드에는 속성을 키로, 속성 값을 값으로 포함하는 배열인 매개변수가 하나만 있습니다. 이 방법을 사용하여 내보낼 수 있는 멤버를 제어할 수 있습니다.
__debugInfo: PHP 5.6부터 이 메소드는 객체의 속성을 인쇄하기 위해 var_dump 함수가 호출될 때 호출됩니다. 이 메소드는 인쇄할 수 있는 속성을 제어하는 데 사용할 수 있습니다. , protected 및 Private 속성이 인쇄됩니다. 인쇄할 수 있는 속성이 포함된 배열을 반환합니다.
__construct: 생성자 함수.
__destruct: 소멸자.
__set, __get, __isset, __unset: 오버로드된 속성.
__call, __callstatic: 오버로드된 메서드.
__clone: 객체 복사.
<?php class A{ private $var; public $var2="b"; function __construct(){ $this->var=mt_rand(); } function __sleep(){ return array("var","var2"); } function __wakeup(){ $this->var=mt_rand(); } function __toString(){ return "class[".__CLASS__."]:{var:$this->var,var2:$this->var2}\n"; } function __invoke($arg){ $this->var2=$arg; } static function __set_state($arr){ $a=new A(); $a->var=$arr['var']; return $a; } } $a=new A(); $str=serialize($a); echo "$str\n"; $b=unserialize($str); var_dump($b); $b("inv-b"); echo $b; eval('$c=' . var_export($b,true) . ';'); var_dump($c); ?>
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 학습을 방문하세요! !
위 내용은 PHP 클래스의 매직 메소드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!