这个物体怎么可能是物体而不是物体呢?

发布于 2024-11-08 06:37:58 字数 254 浏览 0 评论 0原文

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

将打印“BBB”。

具体来说,值为__PHP_Incomplete_Class Object,它是unserialize的结果。为什么 is_object 会返回 false?

This

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

Prints 'BBB'.

Specifically, value is __PHP_Incomplete_Class Object which is the result of unserialize. Why would is_object return false though?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故事↓在人 2024-11-15 06:37:58

来自 PHP 手册:

注意:

如果出现以下情况,该函数将返回 FALSE:
用于未序列化的对象,其中
类定义不存在
(即使 gettype() 返回
对象)。

From the PHP manual:

Note:

This function will return FALSE if
used on an unserialized object where
the class definition is not present
(even though gettype() returns
object).

两仪 2024-11-15 06:37:58

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

As AJ was explaining, the object isn't an object because it's incomplete. An object was put into _SESSION then later tried failed to be de-serialized and woken up because the objects class hasn't been defined yet. If you can resolve this by either including the class into scope before starting session's or by using __autoload or spl_autoload_register as a last ditch rescue attempt.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文