物体的序列化和致命错误
-
28-09-2019 - |
题
谁能解释我,为什么在这种情况下,我们会得到对象 2 特性?
set_error_handler('my_error_handler');
session_start();
$obj = new myclass();
$_SESSION['obj'] = $obj;
$a->b();
class myclass
{
private $a = 1;
private $b = 2;
public function __sleep()
{
return array('a');
}
}
function my_error_handler($code, $error, $file = NULL, $line = NULL)
{
throw new ErrorException($error, $code, 0, $file, $line);
}
UPD: :我希望在这里得到:
1.致命错误(通过)
2.会话中的对象(在 会话文件) 和 1 财产 (失败的)
解决方案
原因是致命错误是 致命的 到发动机。之后,引擎无法再调用功能。
因此,在 php_var_serialize_intern
这 拨电至 __sleep
失败。如您所见,您不需要致命错误 __sleep
有例外,或者没有 __sleep
回调,行为将是相似的。
特别是,行为是检索变量的所有实例属性,并序列化结果的哈希表,就好像它属于数组一样。
我认为这是一种有效的方法,但也许您认为如果要求 __sleep
失败,序列化应该只是失败。你可以尝试 提交功能请求.
不隶属于 StackOverflow