Home>Article>Backend Development> Description of magic methods in php

Description of magic methods in php

无忌哥哥
无忌哥哥 Original
2018-06-28 15:40:56 2056browse

* 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 '
';

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

echo isset($obj->email)?'存在':'不存在';

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!

Statement:
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