从内部序列化对象

时间:2013-10-19 09:47:49

标签: php

我的课程testClass的方法为save。此方法将对象保存到数据库。但它需要在保存之前序列化对象。如何从类中序列化对象来做到这一点?

class testClass {
    private $prop = 777;
    public function save() {
        $serializedObject = serialize(self);
        DB::insert('objects', array('id', 'object'))
                ->values(array(1, $serializedObject))
                ->execute();
    }
}

序列化(自我)显然不起作用。

1 个答案:

答案 0 :(得分:5)

首先,您需要将$this传递给serialize()而不是self

$serializedObject = serialize($this);

其次,除非你没有实现Serializable接口(从PHP 5.1开始),否则你需要实现“魔术方法”__sleep()以序列化私有或受保护的属性:

public function __sleep() {
    return array('prop');
}

manual page about serializing objects应该会有所帮助。