在 PHP 中,如何反序列化到当前对象?

Mik*_*ner 5 php serialization constructor object

这可能是一个菜鸟问题,所以请友善。

我正在尝试在昂贵的“活动”对象上实现缓存。在构造函数中,我首先检查缓存以查看此 Activity 实例是否已存在。如果没有,我会执行所有查询来构建对象,将其序列化并将其保存到缓存中。下次我进来时,我检查缓存并且我的对象在那里,所以我将其反序列化。现在是我的问题,如何将该对象放入$this当前对象中?我不能只是说"$this = unserialize($row[0]);" 失败并显示错误消息“无法$this在 ActivityClass.php 中重新分配”。我缺少什么?

万分感谢!麦克风

Pas*_*TIN 0

正如您所注意到的,您不能只覆盖整个当前对象。


相反,一种可能性是将您正在序列化/反序列化的数据存储到对象的属性中。

这样,您就不会序列化整个对象,而只会序列化其属性之一,并且在反序列化时只会覆盖该单个属性。

通常,您不会序列化与数据库的连接,这可能是对象的另一个属性。


另一种可能性是不让您的对象处理自己的(反)序列化

相反,你应该:

  • 使用外部类实例化您的对象
  • 该外部类负责:
    • 从缓存加载数据并将其推送到您的对象中,
    • 或者调用类的正确方法,从数据库加载数据,然后将该对象保存到缓存中。