代码之家  ›  专栏  ›  技术社区  ›  zerkms

对象的序列化和致命错误

  •  1
  • zerkms  · 技术社区  · 14 年前

    有人能给我解释一下,为什么在这个例子中,我们用 属性?

    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。会话中的对象(in 会话文件 财产( 失败 )

    1 回复  |  直到 14 年前
        1
  •  0
  •   Artefacto    14 年前

    原因是致命的错误是, 致命的 给发动机。之后,引擎就不能再调用函数了。

    因此,在 php_var_serialize_intern 这个 call to __sleep 失败。如你所见,如果 夜眠 已经提出了一个例外,或者如果没有 夜眠 回调,行为将类似。

    特别是,该行为是检索变量的所有实例属性,并将生成的哈希表序列化,就像它属于一个数组一样。

    我认为这是一个有效的方法,但也许你认为如果调用 夜眠 失败,序列化将失败。你可以尝试 submit a feature request .