SplFileObject をシリアル化しようとしていますが、これは 5.2 でサイレントに失敗し、5.3 で致命的なエラーをスローします。これまでのところ、SplFileObject をサブクラス化し、(簡略化された) 次のコードを使用して Serializable インターフェイスを実装することで、5.2 の問題を修正しました (完全なバージョンでは $open_mode と $context も処理されますが、その質問には関係ありません)。
<?php
class SerializableFileObject extends SplFileObject implements Serializable
{
public function serialize()
{
return $this->getRealPath();
}
public function unserialize($serialized)
{
$this->__construct($serialized);
}
}
しかし、5.3 ではまだ致命的なエラーがスローされます。
PHP Fatal error: Class SerializableFileObject could not implement interface Serializable in Unknown on line 0
また、魔法__sleep
や__wakeup
メソッドを追加しようとしましたが、役に立ちませんでした。
Google はそれについてあまり知らないようです。そのため、5.3 で SplFileObject をシリアル化することさえ可能かどうか疑問に思っています。
更新:その質問には答えがないようです(私のコメントを参照)。