if(is_object($value)) echo 'AAA';
if(gettype($value)==='object') echo 'BBB'
打印 'BBB'。
具体而言,值是__PHP_Incomplete_Class Object
,这是unserialize
的结果。为什么is_object
会返回false?
if(is_object($value)) echo 'AAA';
if(gettype($value)==='object') echo 'BBB'
打印 'BBB'。
具体而言,值是__PHP_Incomplete_Class Object
,这是unserialize
的结果。为什么is_object
会返回false?
注:
该函数将返回FALSE,如果一个非系列化的对象上使用 其中 类定义不存在 (即使getType()返回 对象) 。
正如AJ解释的那样,该对象不是一个对象,因为它不完整。一个对象被放入_SESSION中,后来尝试未被反序列化并被唤醒,因为对象类尚未被定义。如果可以通过在开始会话之前将该类包括到范围中来解决此问题,或者通过使用__autoload或spl_autoload_register作为最后一次沟渠抢救尝试来解决此问题。
那么这只是愚蠢的...所以,现在我应该做'gettype($ value)==='object'',即使那些相同的文档特别推荐它? – mpen 2011-05-18 16:53:54
如果我正确理解文档,请确保在反序列化之前对象的类定义已存在。 – 2011-05-18 16:58:37