PHP에서는 "__", 즉 두 개의 밑줄로 시작하는 모든 클래스 메서드가 매직 메서드로 예약되어 있습니다. PHP의 매직 메서드에는 "__construct()", "__destruct()", "__call()", " __callStatic( )", "__get()" 등
권장: "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!