PHP对象的序列化技术

按照PHP的序列化协议

此方法最大的优势,可以将“对象完整保存”

class Person{
    private $age;
    public function __construct($age)
    {
        $this->age=$age;
    }
    public function sayAge(){
        return $this->age;
    }
}
$p1=new Person(100);
$s=serialize($p1);
$p2=unserialize($s);

echo $p2->sayAge(),PHP_EOL;

按照json格式

  1. 此方法不能将方法,私用的属性进行序列化。
  2. 最佳实践,使用stdClass对象即可,并不需要型别信息。
class Human{
    public $name='john';
    private $age=100;
    public $favs=['bas','swim'];
    public $addrs=[];
    public function __construct()
    {
        $a1=new stdClass();
        $a1->tel='123';
        $a2=new stdClass();
        $a2->tel='456';
        array_push($this->addrs,$a1);
        array_push($this->addrs,$a2);

    }
}
$h1=new Human;

//序列化
$rs=json_encode($h1);
echo $rs,PHP_EOL;

//反序列化
$obj=json_decode($rs);//$obj是一个stdClass对象

print_r($obj);

结果如下:

{"name":"john","favs":["bas","swim"],"addrs":[{"tel":"123"},{"tel":"456"}]}
stdClass Object
(
    [name] => john
    [favs] => Array
        (
            [0] => bas
            [1] => swim
        )

    [addrs] => Array
        (
            [0] => stdClass Object
                (
                    [tel] => 123
                )

            [1] => stdClass Object
                (
                    [tel] => 456
                )

        )

)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 11,010评论 0 24
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,174评论 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,935评论 1 45
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,301评论 4 61
  • 随着漫威电影《惊奇队长》的热映,许多人开始认识到这个强大的超级英雄。事实上,惊奇队长有好几代,目前大家从电影中看到...
    素锦s阅读 2,775评论 0 1