【问题标题】:PHP serialization with non-serializable parts带有不可序列化部分的 PHP 序列化
【发布时间】:2009-06-15 14:32:42
【问题描述】:

我有一个存储数据库查询结果的 PHP 类,但还包含一个 PDO 对象,以便可以即时更新/重新插入/等结果。一个临时的 ORM,如果你愿意的话。

问题是,我需要序列化这个类,但 PDO 的实例无法序列化。我没关系;当对象被序列化时,我已经不需要 PDO 实例了。

有没有一种方法可以标记一个变量以排除在类中的序列化之外,就像其他一些语言一样?我知道我可以在序列化类之前手动 unset() PDO 变量,但是对于当前的代码结构,这将是一场噩梦。

我在这里的可取之处是一个可以被覆盖的 __serialize() 方法,但它似乎不存在这样的东西。

【问题讨论】:

    标签: php serialization


    【解决方案1】:

    __sleep() and __wakeup()

    或者,您可以实现Serializable

    【讨论】:

    • 正是我想要的!谢谢,Ionut G. Stan!
    【解决方案2】:

    从 PHP 7.4 开始,还有 __serialize__unserialize(参见 Documentation)作为更有用的替代方案。

    Serializable 接口也可能是deprecated,通常首选魔术方法(另请参阅this)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多