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

まず、ではなく$thisに渡す必要があります。serialize()self

$serializedObject = serialize($this);

次に、(PHP 5.1 以降のように) インターフェースを実装していない場合を除き、非公開または保護されたプロパティをシリアル化するためにSerializable「マジック メソッド」を実装する必要があります。__sleep()

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

オブジェクトのシリアル化に関するこのマニュアルページは、さらに役立つはずです。

于 2013-10-19T09:51:27.293 に答える