我可以在PHP中检查某个对象是否是某种特定类?

时间:2009-12-27 10:50:10

标签: php

示例:一个方法应该返回一个SpecificClass的实例。如果来自该类,我如何检查该返回值?

4 个答案:

答案 0 :(得分:64)

您可以使用instanceof运算符来检查对象是否是以下实例:

  • 一堂课
  • 或该班级的儿童班
  • 或实现接口的类的实例

这意味着它不能用于检测您的对象是否是specific类的实例 - 如果您的对象是该类的子类的实例,它将说“是”。


例如,这部分代码:

class ClassA {}
class ClassB extends ClassA {}

$a = new ClassB();
if ($a instanceof ClassA) {
    echo '$a is an instanceof ClassA<br />';
}
if ($a instanceof ClassB) {
    echo '$a is an instanceof ClassB<br />';
}

会得到这个输出:

$a is an instanceof ClassA
$a is an instanceof ClassB
在某种程度上,

$aClassA的一个实例,因为ClassBClassA的子类。

当然,$a也是ClassB的一个实例 - 请查看它实例化的行。

答案 1 :(得分:7)

您可以使用instanceof运算符或is_a函数。

如果你想传入一个带有类名的字符串(在更动态的代码库中),

is_a很有用。

答案 2 :(得分:4)

if ($object instanceof classname)
 ....

Manual: Classes and Objects in PHP5

答案 3 :(得分:4)

您无法检查返回值本身,但您可以使用“instanceof”检查返回的类。 (在类似的基础上,您可能会发现'get_class'很有用。)