Home >Backend Development >PHP Problem >When is the php magic method __unset() called?

When is the php magic method __unset() called?

青灯夜游
青灯夜游Original
2020-08-19 16:05:383139browse

php magic method __unset() is called when the unset() function is called to destroy an inaccessible attribute; it receives a parameter expressing the name of the attribute.

When is the php magic method __unset() called?

Recommendation: "PHP Video Tutorial"

Attribute overloading: When accessing a property that does not exist or has insufficient permissions Attributes can trigger a series of magic methods, which are called attribute overloading

__unset() will be called when the unset() function is called to destroy an inaccessible attribute. It receives a parameter to express the attribute. name.

<?php

    //属性重载
    class Person{
        //属性
        public $name;
        private $age;

        //构造方法
        public function __construct($name,$age) {
            $this->name = $name;
            $this->age  = $age;
        }

        //增加__unset方法,没有返回值
        public function __unset($name){
            $allow = array(&#39;age&#39;);

            //判断
            if(in_array($name,$allow)){
            //如果允许删除,就帮助其删除
                unset($this->$name);
            }
        }
    }
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;

    //实例化
    $person = new Person(&#39;方智&#39;,19);

    var_dump($person);
    //删除属性
    //unset($person->name);                    //公有属性可以直接被unset掉
    //var_dump($person);

    //unset私有属性
    unset($person->age);
    var_dump($person);

    unset($person->tail);

For more programming-related knowledge, please visit: Introduction to Programming! !

The above is the detailed content of When is the php magic method __unset() called?. 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