>  기사  >  백엔드 개발  >  PHP의 매직 메소드는 무엇입니까?

PHP의 매직 메소드는 무엇입니까?

(*-*)浩
(*-*)浩원래의
2019-10-09 10:53:462754검색

객체 지향 프로그래밍에서 PHP는 프로그래밍에 많은 편의성을 제공하는 일련의 매직 메서드를 제공합니다. PHP의 매직 메소드는 일반적으로 __(두 개의 밑줄)로 시작하고 명시적인 호출이 필요하지 않지만 특정 조건에 의해 트리거됩니다.

PHP의 매직 메소드는 무엇입니까?

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 및 __debugInfo()와 같은 메서드는 PHP에서 Magic 메서드라고 합니다. (권장 학습: PHP 비디오 튜토리얼)

참고: 클래스 메소드의 마법 기능을 사용하려는 경우를 제외하고는 자체 클래스 메소드 이름을 지정할 때 이러한 메소드 이름을 사용할 수 없습니다.

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

__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으로 문의하세요.