ini_set('unserialize_callback_func', 'spl_autoload_call');
spl_autoload_register(array(self::getInstance(), 'autoload'));
为什么要像上面那样设置spl_autoload_call
?
我做了一个测试:
$serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';
ini_set('unserialize_callback_func','mycallback');
function mycallback($classname) {
echo 1;
}
function func2()
{
echo 2;
}
spl_autoload_register('func2');
unserialize($serialized_object);
输出结果为:
212
有人可以解释一下吗?
答案 0 :(得分:16)
答案 1 :(得分:-1)
unserialize()需要在实际反序列化数据之前加载类定义。未加载类定义时调用unserialize_callback_func,并且spl_autoload_call尝试使用注册的所有自动加载器加载unserialize()所需的类。