PHP 인터셉터 메서드에는 다음이 포함됩니다. 1. "__get" 메서드, 2. "__set()" 메서드, 4. "__unset($property)" 메서드, 6. "__call()" 방법.
php는 어떤 인터셉터 메소드를 제공하나요?
2 | __set($property, $value) | 정의되지 않은 속성에 대한 값을 설정할 때 이 메서드를 호출하세요. | >= PHP 5.3.0 |
3 | __isset($property) | isset()이 다음과 같은 경우 정의되지 않은 속성에서 호출되면 이 메서드가 호출됩니다. | >= PHP 5.1.0 |
4 | __unset($property) | 정의되지 않은 속성에서 unset()이 호출되면 이 메서드가 호출됩니다. | >= PHP 5.1.0 |
5 | __call($property, $args_array) | 호출되지 않음 메소드 정의 시 해당 메소드를 실행합니다. | >= PHP 5.3.0 |
자세한 내용은 , http://php.net/manual/zh/언어.oop5.magic.php를 참조하세요. 소개 | PHP 인터셉터란 무엇인가요? | ||
먼저 코드를 살펴보겠습니다. School 클래스가 정의되고 $obj 객체가 인스턴스화되며 정의되지 않은 속성 Teacher가 얻어집니다. | php 명령줄을 사용하여 실행하면 php에서 $obj->teacher 값이 null 값이므로 NULL이 인쇄되는 것을 볼 수 있습니다. | 설명은 다음과 같습니다. , php 명령줄 실행 브라우저 페이지의 실행이 반드시 동일하지는 않습니다. 아래 스크린샷을 볼 수 있습니다. 웹 서버가 Apache를 통해 동일한 스크립트를 실행하면 Apache는 PHP 없이 브라우저에 알림을 보고하고 200을 반환합니다. 브라우저는 괜찮습니다. PHP와 웹 서버 간의 상호 작용 및 웹 서버와 브라우저 간의 상호 작용에 문제가 있습니다. |
아래 코드와 결과를 살펴보겠습니다
<?php class School { function __get($var) { echo $var; echo "\r\n"; return "hello"; } public $name = "Tom"; } $obj = new School; var_dump($obj->teacher); var_dump($obj->name);
다음을 실행한 결과는 다음과 같습니다. 설명을 위해 __get 메소드에는 호출의 정의되지 않은 속성 이름인 매개변수가 있어야 합니다. 호출의 알 수 없는 속성에 대한 결과입니다. [root@localhost php]# php538 interceptor.php
teacher
string(5) "hello"
string(3) "Tom"
더 많은 관련 지식을 알고 싶으시다면
를 방문해주세요! !
위 내용은 PHP의 인터셉터 메소드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!