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

ope*_*rog 38 php

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

Pas*_*TIN 65

您可以使用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 />';
}
Run Code Online (Sandbox Code Playgroud)

会得到这个输出:

$a is an instanceof ClassA
$a is an instanceof ClassB
Run Code Online (Sandbox Code Playgroud)

$a在某种程度上,是一个实例ClassA,因为ClassB是儿童类的ClassA.

当然,$a也是一个例子ClassB- 看看它实例化的界限.


Emi*_*röm 8

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

is_a 如果要传入具有类名称的字符串(在更动态的代码库中),则非常有用.


Joh*_*ker 5

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