php类知识---最疯狂的魔术方法serialize,_sleep,__wakeup,unserialize,__autoload,__clone

Posted saintdingspage

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php类知识---最疯狂的魔术方法serialize,_sleep,__wakeup,unserialize,__autoload,__clone相关的知识,希望对你有一定的参考价值。

  • serialize-----把实例化的对象写入文件
<?php

class mycoach

    public function __construct($name,$age,$expertin=[])

        $this->name = $name;
        $this->age = $age;
        $this->expertin=[];
        $this->expertin=$expertin;
    

    public function __sleep()
    
        return [name,age,expertin];
    


$cpc = new mycoach(陈培昌,22,[散打,泰拳, 巴西柔术]);
$srobj = serialize($cpc);
file_put_contents(cpcssecret.txt,$srobj);
?>

关键要点:
----类内部实现的 __sleep()要返回数组数据结构,元素都来自类的属性,以此达到控制哪些类可以写入文件
----serialize方法以对象为参数,返回值就是要写入文件的数据。
生成的文件中记录的对象形如:
O:7:"mycoach":3:s:4:"name";s:9:"陈培昌";s:3:"age";i:22;s:8:"expertin";a:3:i:0;s:6:"散打";i:1;s:6:"泰拳";i:2;s:12:"巴西柔术";
 

 

  • __sleep 调用serialize时触发
  • unserialize-----把文件中的记录还原为类的实例对象
  • __wakeup------执行unserialize时调用
  • clone复制对象属性
  • __clone可以限制哪些属性可以复制,哪些属性采用自定义
  • __autoload 唯一在类定义体外使用的方法

以上是关于php类知识---最疯狂的魔术方法serialize,_sleep,__wakeup,unserialize,__autoload,__clone的主要内容,如果未能解决你的问题,请参考以下文章

php魔术方法。。

PHP魔术方法和魔术变量

PHP的魔术常量和魔术方法

php 中的魔术方法-----“事件方法”

巧用PHP中__get()魔术方法

PHP魔术方法