如何序列化具有属性内部闭包的对象?

Ann*_* K. 3 php string serialization closures

如果我这样做serialize($obj),我得到:

不允许序列化'闭包'

序列化时是否有任何方法可以忽略这些闭包?我无论如何反序列化字符串时都不需要它们(这些属性的值可以为null或其他).

我的班级看起来像这样:

Class Node{

  protected $attrs = array();

}
Run Code Online (Sandbox Code Playgroud)

$attrs 是一个关联数组,可以包含一些闭包的元素,比如 $attrs['validator'] = function(){...}

Kin*_*nch 7

这很简单:你做不到.闭包不可序列化.如果要创建"类似的东西",可以使用实现的类的对象__invoke()而不是闭包.

如果您不需要闭包(或者您可以在反序列化时自己重新创建它们),则可以实现Serializable并且在序列化时不考虑闭包.这个接口(实现serialize()unserialize())应该优先于__sleep()/ __wakeup().