4

我有testClass具有方法的类save。此方法将对象保存到数据库。但它需要在保存之前序列化对象。我怎样才能从类中序列化对象来做到这一点?

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

serialize(self) 显然不起作用。

4

1 回答 1

5

首先,您需要传递$thisserialize()而不是self

$serializedObject = serialize($this);

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

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

这个关于序列化对象的手册页应该会有所帮助。

于 2013-10-19T09:51:27.293 回答