我正在尝试序列化一个 SplFileObject,它在 5.2 中静默失败并在 5.3 中引发致命错误。到目前为止,我已经解决了 5.2 中的问题,方法是继承 SplFileObject 并使用(简化)以下代码实现 Serializable 接口(完整版还处理 $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
方法,但无济于事。
谷歌似乎对此知之甚少,所以我想知道是否有可能在 5.3 中序列化一个 SplFileObject。
更新:似乎那个问题没有答案(参见我的评论)。