【发布时间】:2010-08-14 07:08:08
【问题描述】:
谁能解释一下,为什么在这种情况下,我们会在会话中获得具有 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属性(失败)
【问题讨论】:
-
您的问题不清楚。你在期待什么?
-
@Sarfraz:对不起。问题已更新
-
午饭后我会调查,但你的脚本真的不应该引发致命错误(顺便说一下错误处理程序不处理致命错误)
-
@Artefacto:确实,他们不应该。但这并不意味着,如果我在常规开发过程中偶尔出错,php 应该会破坏我的数据。
-
“顺便说一句,错误处理程序不处理致命事件”——我知道,但这种情况下的错误处理程序是有意义的
标签: php session serialization fatal-error