>  기사  >  백엔드 개발  >  PHP의 매직 메소드에 대한 설명

PHP의 매직 메소드에 대한 설명

无忌哥哥
无忌哥哥원래의
2018-06-28 15:40:562062검색

* 매직 메소드:

* 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 &#39;<hr>&#39;;

$obj에서 감지됩니다. 이메일 속성이 존재하는지 여부, 클래스의 __isset()이 true를 반환하기 때문에 yes를 반환합니다.

echo isset($obj->email)?&#39;存在&#39;:&#39;不存在&#39;;

클래스 속성을 파괴하려면 외부에서 unset()을 사용하세요

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

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