php魔术方法
admin
2023-06-30 02:42:45
0次
55);

    /**
     * 构造方法 
     * 当类被实力化时就会被出发此方法
     * 该方法就不用演示了
     */
    function __construct()
    {
        echo '构造方法:__construct()
';     }               /**      * 对象被序列化时会先出发此方法       * 如果没有此魔术方法 会把 类属性 $a,$b,$c 序列化      * 此方法可以指定那些属性被序列化      */     public function __sleep()      {         return array( 'a' ,  'b' );     }               /**      * 对象被反序列化时会先出发此方法      */     public function __wakeup()      {         echo 1;     }          /**      * 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。      * 此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR  级别的致命错误      */     public function __toString()     {         return 'echo 对象?
';     }               /**      * 自 PHP 5.1.0 起当调用 var_export()  导出类时,此静态 方法会被调用。       * 本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。      */     public static function __set_state($array)      {         return $array['d'];     }               /**      * PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,      * 如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。       *       * 该方法就不用演示了      */     public function __destruct()     {         //echo 55;     }               /**      * 在对象中调用一个不可访问方法时,__call() 会被调用      */     public function __call($name, $arguments) {         echo '__call() : ';         // 注意: $name 的值区分大小写         var_dump($name);         var_dump($arguments);         echo '
';         if( $name == 'abc' )         {             $this->$name();         }     }     private function abc()     {         echo '999
';     }               /**      * 用静态方式中调用一个不可访问方法时,__callStatic() 会被调用。       */     public static function  __callStatic ( $name ,  $arguments )      {         echo '__callStatic() : ';         // 注意: $name 的值区分大小写         var_dump($name);         var_dump($arguments);         echo '
';     }          /**      * 在给不可访问属性赋值时,__set() 会被调用。       */     public function __set( $name,$val )     {         echo '__set : 方法
';         $this->$name = $val;     }               /**      * 读取不可访问属性的值时,__get() 会被调用。        */     public function __get( $name )     {         echo '__get : 方法
';         return $this->$name;     }               /**      * 判断属性是否存在时被调用      */     public function __isset($name)      {         echo '__isset : 方法
';         return isset( $this->e[$name] );     }               /**      * 当对不可访问属性调用 unset()  时,__unset() 会被调用。       */     public function __unset($name)     {         echo '__unset : 方法
';         unset( $this->$name );         var_dump($name);     }               /**      * 对象被克隆时被调用的      */     public function __clone()     {         echo '__clone : 方法';         echo ': 被克隆了
';     }               /**      * 当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。       */     public function  __invoke ( $x )      {         echo '__invoke : 方法 
';          var_dump ( $x );     } } $ob = new magic(); /**  * __sleep() 事例  * var_dump(serialize($ob));  */ /**  * __wakeup 事例  * $ser = serialize($ob);  * unserialize($ser);  */ /**  * __toString 事例  * echo $ob;  */ /**  * __set_state 事例 手册里  * eval('$b = '.var_export($ob,true).';');  * var_dump($b);  */ /**  * __call 事例  * $ob->meiyou();  * $ob->abc(1,2);  */ /**  * __callStatic 事例   * magic::kao(22);  */ /**  * __set 事例  * print_r($ob);  * $ob->c=2;  * print_r($ob);  */ /**  * __get 事例  * print_r($ob->c);  */ /**  * __isset 事例  * var_dump( isset($ob->huazi) );  */ /**  * __unset 事例  * unset($ob->b);  * print_r($ob);  */ /**  * __clone 事例  * $c = clone $ob;  */ /**  * __invoke 事例  * $ob('hehe');  */ class a{     function __construct(){              }     function __destruct(){              }     function __call( $name,$val ){              }     static function __callStatic($name, $arguments) {     }     function __get($name){              }     function __set($name,$val){              }     function __unset($name){              }     function __isset($name){              }     function __toString() {     }     function __set_state($array) {     }     function __invoke(){              }     function __clone(){              }     function __sleep(){     }     function __wakeup(){     }     }


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...