Description of magic methods in php

无忌哥哥
Release: 2023-04-01 21:24:02
Original
2100 people have browsed it

* Magic method:

* 1. Methods in the class that start with double underscores are built-in by the system. User methods should not start with double underscores;

* 2. Magic The method is automatically triggered by the system under certain conditions and cannot be called directly by the user;

* Note: It is a good habit to add a single underscore in front of the private members in the class;

* For example: private $_salary; private function _listUsers(){...}

* Use magic methods to implement several object access interceptors

* The so-called interceptor: it is some errors or illegal access to users Perform detection and control.

* We have learned __get($fieldName) and __set() before, which are the two most commonly used interceptors

* Now we will learn another set: __isset($fieldName) and __unset($fieldName)

* 1. __isset(): It will be automatically called when checking whether a class attribute exists outside the class

* 2. __unset(): When checking whether a class attribute exists outside the class When a class attribute is destroyed externally, it will be automatically called.

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;;
Copy after login

Detects whether the email attribute exists in $obj and returns that it exists because __isset() in the class returns true

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

Use unset() externally To destroy class attributes

The above is the detailed content of Description of magic methods in php. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template