魔术方法

魔术方法在 PHP 中以两个下划线开头的方法 , __construct(), __destruct (), __call(), __callStatic(),__get(), __set(), __isset(), __unset (), __sleep(), __wakeup(), __toString(), __set_state,() __clone() __autoload()等 , 被称为"魔术方法"(Magic methods) 。
集合涵义在PHP中以两个下划线开头的方法 , __construct(), __destruct (), __call(), __callStatic(),__get(), __set(), __isset(), __unset (), __sleep(), __wakeup(), __toString(), __set_state,() __clone() __autoload()等 , 被称为"魔术方法"(Magic methods) 。如果希望PHP调用这些魔术方法 , 首先必须在类中定义 , 否则PHP不会执行未创建的魔术方法 。注意:PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法 。所以在定义类方法时 , 除了上述魔术方法 , 建议不要以 __ 为前缀 。包含成员__set()简介:当程式试图写入一个不存在或者不可见的成员变数时 , PHP就会执行__set()方法 。__set()方法包含两个参数 , 分别表示变数名称和变数值 , 两个参数都不可省略 。实例1:<?phpclass SportObject{    private $type='';    public function __get($name){        if(isset($this->$name)){            echo'变数'.$name.'的值为:'.$this->$name.'<br>';        }else{            echo'变数'.$name.'未定义 , 初始化为0<br>';            $this->$name=0;        }    }    public function __set($name,$value){        if(isset($this->$name)){            $this->$name=$value;            echo'变数'.$name.'赋值为:'.$value.'<br>';        }else{            $this->$name=$value;            echo'变数'.$name.'被初始化为:'.$value.'<br>';        }    }}    $MyComputer=newSportObject();    $MyComputer->type='DIY';    $MyComputer->type;?>例1输出结果为:变数type赋值为:DIY变数type的值为:DIY__get()简介:当程式试图调用一个未定义或不可见的成员变数时 , 可以通过__get()方法来读取变数值 。__get()方法有一个参数 , 表示要调用的变数名 。实例2:<?phpclass SportObject{    private $type='';    public function__get($name){        if(isset($this->$name)){            echo'变数'.$name.'的值为:'.$this->$name.'<br>';        }else{            echo'变数'.$name.'未定义 , 初始化为0<br>';            $this->$name=0;        }    }    public function __set($name,$value){        if(isset($this->$name)){            $this->$name=$value;            echo'变数'.$name.'赋值为:'.$value.'<br>';        }else{            $this->$name=$value;            echo'变数'.$name.'被初始化为:'.$value.'<br>';        }    }}    $MyComputer=newSportObject();    $MyComputer->name;?>