>백엔드 개발 >PHP 문제 >PHP 매직 메소드의 이해

PHP 매직 메소드의 이해

藏色散人
藏色散人원래의
2020-09-12 11:06:473465검색

PHP에서는 "__", 즉 두 개의 밑줄로 시작하는 모든 클래스 메서드가 매직 메서드로 예약되어 있습니다. PHP의 매직 메서드에는 "__construct()", "__destruct()", "__call()", " __callStatic( )", "__get()" 등

PHP 매직 메소드의 이해

권장: "PHP 비디오 튜토리얼"

마법의 방법

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset() , __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 및 __debugInfo() 및 기타 메서드는 PHP에서 매직 메서드라고 합니다. 마법 기능을 사용하려는 경우가 아니면 자체 클래스 메서드 이름을 지정할 때 이러한 메서드 이름을 사용할 수 없습니다.

주의

PHP에서는 __(밑줄 2개)로 시작하는 모든 클래스 메서드를 매직 메서드로 예약합니다. 따라서 클래스 메소드를 정의할 때 위의 매직 메소드를 제외하고 앞에 __를 붙이지 않는 것이 좋습니다.

__sleep() 및 __wakeup()

public __sleep ( void ) : array

__wakeup ( void ) : void

serialize() 함수는 클래스에 매직 메서드 __sleep()이 있는지 확인합니다. 존재하는 경우 이 메서드가 먼저 호출된 다음 직렬화 작업이 수행됩니다. 이 함수는 객체를 정리하고 직렬화해야 하는 객체의 모든 변수 이름이 포함된 배열을 반환하는 데 사용할 수 있습니다. 메서드가 아무것도 반환하지 않으면 NULL이 직렬화되고 E_NOTICE 수준 오류가 발생합니다.

참고:

__sleep()은 상위 클래스의 비공개 멤버 이름을 반환할 수 없습니다. 그렇게 하면 E_NOTICE 수준 오류가 발생합니다. 대신 직렬화 가능 인터페이스를 사용할 수 있습니다.

__sleep() 메서드는 커밋되지 않은 데이터를 제출하거나 유사한 정리 작업을 수행하는 데 자주 사용됩니다. 동시에 이 기능은 큰 개체가 있지만 모두 저장할 필요가 없는 경우에 유용합니다.

반대로 unserialize()는 __wakeup() 메서드가 있는지 확인합니다. 존재하는 경우 __wakeup 메서드를 먼저 호출하여 개체에 필요한 리소스를 미리 준비합니다.

__wakeup()은 데이터베이스 연결 재설정이나 기타 초기화 작업 수행과 같은 역직렬화 작업에 자주 사용됩니다.

위 내용은 PHP 매직 메소드의 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.