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

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

王林
王林원래의
2020-08-20 13:50:172429검색

PHP의 매직 메소드는 다음과 같습니다. 1. 직렬화되어야 하는 객체의 모든 변수 이름이 포함된 배열을 반환하는 __sleep 2. 클래스가 문자열로 처리될 때 출력될 콘텐츠를 반환하는 __tostring ; 3. __construct, 생성 방법 4. __destruct, 소멸자 방법.

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

이중 밑줄(__)로 시작하는 모든 클래스 메소드를 PHP의 매직 메소드로 유지하세요.

(추천 튜토리얼: php 그래픽 튜토리얼)

매직 메소드를 살펴보겠습니다:

1 __sleep: 직렬화해야 하는 객체의 모든 변수 이름을 포함하는 배열을 반환합니다.

serialize 함수는 클래스를 직렬화할 때 먼저 클래스에 __sleep 메서드가 존재하는지 확인합니다. 존재하는 경우 이 메서드는 직렬화 작업이 수행되기 전에 호출되며 __sleep에서 반환된 배열의 속성만 직렬화됩니다. __sleep이 아무것도 반환하지 않으면 null이 직렬화되고 E_NOTICE 수준 오류가 생성됩니다.

__sleep은 상위 클래스의 비공개 멤버를 반환할 수 없습니다. 그렇지 않으면 E_NOTICE 수준 오류가 발생합니다. 이 방법은 규모가 크지만 모든 데이터를 보유할 필요는 없는 개체에 유용합니다.

2. __wakeup: __sleep과 달리 unserialize 함수는 클래스에 __wakeup 메서드가 있는지 먼저 확인한 후 해당 메서드를 먼저 호출한 다음 deserialization 작업을 수행합니다. 역직렬화 또는 기타 초기화 작업 전에 개체에 필요한 일부 리소스를 준비하는 데 사용됩니다.

3. __tostring: 클래스가 문자열로 처리될 때 출력할 내용을 반환합니다. 이 메서드는 문자열을 반환해야 하며 이 메서드에서 예외를 발생시킬 수 없습니다. 그렇지 않으면 치명적인 오류가 발생합니다.

PHP5.2 이전에는 echo와 print를 직접 사용할 때만 이 메서드가 적용되었습니다. 이후에는 __toString 메서드를 정의하지 않은 객체가 문자열로 변환되면 치명적일 수 있습니다. 오류가 발생합니다.

(동영상 튜토리얼 추천: php 동영상 튜토리얼)

4. __invoke: PHP5.3부터 객체를 함수로 호출하려고 할 때 이 메소드가 호출됩니다.

5. __set_state: PHP 5.1부터 클래스를 내보내기 위해 var_export 함수가 호출될 때 이 정적 메서드가 호출됩니다. 이 메소드에는 속성을 키로, 속성 값을 값으로 포함하는 배열인 매개변수가 하나만 있습니다. 이 방법을 사용하여 내보낼 수 있는 멤버를 제어할 수 있습니다.

6. __debugInfo: PHP 5.6부터 이 메소드는 객체의 속성을 인쇄하기 위해 var_dump 함수가 호출될 때 호출됩니다. 이 메소드가 정의되지 않은 경우 이 메소드를 사용하여 인쇄할 수 있습니다. 모든 공개, 보호 및 개인 속성이 인쇄됩니다. 인쇄할 수 있는 속성이 포함된 배열을 반환합니다.

7.__construct: 생성자 함수.

8. __destruct: 소멸자.

9, __set, __get, __isset, __unset: 오버로드된 속성.

10, __call, __callstatic: 오버로드된 메서드.

11. __clone: ​​​​객체 복사.

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

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