我有一个PHP类,它存储数据库查询结果,但也包含一个PDO对象,以便可以动态更新/重新插入/等结果。一个临时的ORM,如果你愿意的话。
问题是,我需要序列化这个类,但PDO的实例无法序列化。我很好;当对象被序列化时,我不需要PDO实例。
有没有办法在类中标记变量以排除序列化,就像有其他语言一样?我知道在我想要序列化类之前我可以手动取消设置()PDO变量,但是使用当前的代码结构,这将是一个噩梦。
我在这里保存的优雅是一个可以被覆盖的__serialize()方法,但它不会出现类似的东西。
答案 0 :(得分:6)
或者,您可以实施Serializable。
答案 1 :(得分:0)
从 PHP 7.4 开始,还有 __serialize
和 __unserialize
(参见 Documentation)作为更有用的替代方案。
Serializable
接口也可能是 deprecated,通常首选魔术方法(另见 this)。