该对象如何成为对象而不是对象?

时间:2011-05-18 16:48:13

标签: php serialization

if(is_object($value)) echo 'AAA';
if(gettype($value)==='object') echo 'BBB'

打印'BBB'。

具体而言,值为__PHP_Incomplete_Class Object,这是unserialize的结果。为什么is_object会返回false?

2 个答案:

答案 0 :(得分:6)

来自PHP manual:

  

注意:

     

如果,此函数将返回FALSE   用于未序列化的对象   类定义不存在   (即使gettype()返回   对象)。

答案 1 :(得分:2)

正如AJ所解释的那样,该对象不是一个对象,因为它不完整。一个对象被放入_SESSION然后被尝试无法被反序列化并被唤醒,因为尚未定义对象类。如果您可以通过在启动会话之前将类包含在范围内,或者使用__autoload或spl_autoload_register作为最后的沟渠救援尝试来解决此问题。