【发布时间】:2017-02-03 15:50:58
【问题描述】:
我收到一个未定义特定类的 PHP 错误(当我引用成员方法时),在某些情况下未定义是可以的。所以我创建了一个 IF 语句,首先检查该类是否存在,然后检查其方法是否存在。现在我的 IF 语句正在生成错误。这是 IF 语句:
$visitordataavailable = ((isset($_SESSION['VISITOR'])) && (class_exists("Visitor",false)) && method_exists($_SESSION['VISITOR'],'toArray'));
这是错误:
致命错误:method_exists():脚本试图执行方法或访问不完整对象的属性。请确保类定义“访客” 在 unserialize() 被调用或提供 __autoload() 函数以在...中加载类定义之前加载了您尝试操作的对象。
这怎么会产生错误!? class_exists 返回 true 表示“Visitor”类存在,但 method_exists 崩溃,因为未定义类“Visitor”。 “定义”的类与“存在”的类不同吗?
我在这里做错了什么?
【问题讨论】:
-
Myabe 类定义存在,但你真的在
$_SESSION['VISITOR']中有它的实例吗?有__wakeup() __sleep()的班级吗?最好再做一次is_object($_SESSION['VISITOR'])检查 -
class_exists()如果 PHP 可以找到类(包括/必需,使用自动加载等),则返回 true。它不会在会话变量中告诉您任何有关它的当前状态的信息。 -
JustOnUnderMillions:is_object 像我希望的那样工作!你能解释一下一个变量如何保存一个对象,PHP 识别出该对象的类存在,但是 is_object 是假的吗?
标签: php class error-handling