* 매직 메소드:
* 1. 이중 밑줄로 시작하는 클래스의 메소드는 시스템에 의해 내장됩니다. 사용자 메소드는 이중 밑줄로 시작하면 안 됩니다.
* 2. 매직 메소드는 자동으로 트리거되고 호출됩니다.
* 참고: 클래스의 private 멤버 앞에 밑줄을 하나 추가하는 것이 좋습니다.
* 예: private $_salary; private function _listUsers(){...}
* 매직 메소드를 사용하여 여러 객체 액세스 인터셉터 구현
* 소위 인터셉터: 사용자의 일부 오류나 불법 액세스를 감지하고 제어하는 것입니다.
* 가장 일반적으로 사용되는 두 가지 인터셉터인 __get($fieldName) 및 __set()을 이전에 배웠습니다.
* 이제 또 다른 집합인 __isset($fieldName) 및 __unset($fieldName)
* 1을 배워 보겠습니다. __isset(): 클래스 외부에 클래스 속성이 존재하는 것을 감지하면 자동으로 호출됩니다
* 2. __unset(): 클래스 외부에서 클래스 속성이 파괴되면 자동으로 호출됩니다.
class Demo { private $name = 'peter'; private $email = 'peter@php.cn'; //当在类外使用isset()检测某个属性是否存在时自动调用 public function __isset($name) { //对访问进行过滤:如果属性名是'name',返回false,否则允许访问 //即除了'name'属性外的其它属性允许外部进行isset()检测 return ($name=='name') ? false : true; } } //实例化 Demo 类 $obj = new Demo; //检测$obj中是否有name属性,返回 echo isset($obj->name)?'存在':'不存在'; echo '<hr>';
$obj에서 감지됩니다. 이메일 속성이 존재하는지 여부, 클래스의 __isset()이 true를 반환하기 때문에 yes를 반환합니다.
echo isset($obj->email)?'存在':'不存在';
클래스 속성을 파괴하려면 외부에서 unset()을 사용하세요
위 내용은 PHP의 매직 메소드에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!