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(){...}
这很简单:你做不到.闭包不可序列化.如果要创建"类似的东西",可以使用实现的类的对象__invoke()而不是闭包.
如果您不需要闭包(或者您可以在反序列化时自己重新创建它们),则可以实现Serializable并且在序列化时不考虑闭包.这个接口(实现serialize()和unserialize())应该优先于__sleep()/ __wakeup().