• PHP OOP 魔术方法


        1、__construct():构造函数,new一个新对象时,自动调用   

    [public] function __construct($name=""){
         $this -> name = $name;
     }

        2、__destruct():析构函数,当一个对象被销毁前,自动调用 

     function __destruct(){
         echo "";
    }

        3、__get():访问类中私有属性时,自动调用。传递读取的属性名,返回$this->属性名  

    function __get($key){
                switch ($key) {
                    case 'name':
                        return $this->$key."(这是__get读取时加上的文字)";
                    case 'age':
                        return "0".$this->$key;
                    default:
                        return $this->$key;
                }
                return $this->$key;
            }

        4、__set():给类的私有属性赋值时,自动调用。传递需要设置的属性名和属性值

    function __set($key,$value){
         if($key=="name"){
                      $this->$key = $value."(这是__set设置上的文字!)";
                     return;
                }
                
                $this->$key = $value;
     }

        5、__isset():使用isset()检测对象私有属性时,自动调用。传递检测的属性名,返回isset($this->属性名)

             function __isset($name){
                if($name=="sex") return;
                return isset($this->$name);
            }    

        6、__unset():使用unset()删除对象私有属性时,自动调用。传递删除的函数名,方法中执行unset($this->属性名)

            function __unset($name){
                if($name=="name"){
                    echo "<span style='color:red;'>哈哈哈哈name你删不掉!</span><br>";
                    return;
                } 
                unset($this->$name);
            }

        7、__toString():使用echo打印对象时,自动调用。返回想要在打印对象时显示的内容,返回必须是字符串

            function __toString(){
                $str = <<<str
                您要打印的对象属性如下:<br/>
                $name => {$this->name};<br/>
                $age => {$this->age};<br/>
    str;
                return $str;
            }        

        8、__call():调用一个类中未定义或未公开的方法时,自动调用。传递被调用的函数名,和参数列表数组

            function __call($funcName,$funcParams){
                echo "您调用的函数:{$funcName},参数列表";
                print_r($funcParams)
            }
        

        9、__clone():当使用clone关键字克隆一个对象时,自动调用。作用是为新克隆的对象进行初始化赋值

            function __clone(){
                $this->name = "李四";
            }

        10、__sleep():对象反序列化时,自动调用。返回一个数组,数组中的值就是可以序列化的属性

            function __sleep(){
                return array("name","age");  //只有name/age两个属性可以串行化
            }

        11、__wakeup():对象反序列化时,自动调用。为反序列化新产生的对象,进行初始化赋值

            function __wakeup(){
                $this->name = "李四";
            }

        12、__autoload():需要在类外部声明函数。当实例化一个未声明的类时,自动调用。传递实例化的类名,可以使用类名自动加载对应的类文件

        function __autoload($className){
            include strtolower($className).".class.php"
        }
  • 相关阅读:
    C++ 虚函数在基类与派生类对象间的表现及其分析
    借@阿里巴巴 耍了个帅——HTML5 JavaScript实现图片文字识别与提取
    Dede(织梦) CMS SQL Injection Vulnerability
    dedecms v5.5 final getwebshell exploit(datalistcp.class.php)
    DEDECMS网站管理系统Get Shell漏洞
    织梦(Dedecms)select_soft_post.php页面变量未初始漏洞
    织梦(Dedecms) 5.1 feedback_js.php 注入漏洞
    织梦(DEDE)CMS V5.3 覆盖任意变量导致远程包含漏洞
    dedecms织梦 v5.5 两处跨站漏洞
    dedecms织梦 v5.6 两处跨站漏洞
  • 原文地址:https://www.cnblogs.com/c-hl/p/6991057.html
Copyright © 2020-2023  润新知