Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以检查对象在PHP中是否属于特定类吗?_Php - Fatal编程技术网

我可以检查对象在PHP中是否属于特定类吗?

我可以检查对象在PHP中是否属于特定类吗?,php,Php,示例:方法应该返回SpecificClass的实例。如果返回值来自该类,我如何检查它 if ($object instanceof classname) .... 您可以使用操作符检查对象是否是以下对象的实例: 班级 或者那个班的一个孩子班 或实现接口的类的实例 这意味着它不能用于检测您的对象是否是某个特定的类的实例——如果您的对象是该类的子类的实例,它会说“是” 例如,这部分代码: class ClassA {} class ClassB extends ClassA {} $a

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

if ($object instanceof classname)
 ....

您可以使用操作符检查对象是否是以下对象的实例:

  • 班级
  • 或者那个班的一个孩子班
  • 或实现接口的类的实例
这意味着它不能用于检测您的对象是否是某个
特定的
类的实例——如果您的对象是该类的子类的实例,它会说“是”


例如,这部分代码:

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
在某种程度上是
ClassA
的一个实例,因为
ClassB
ClassA
的一个子类


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

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

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


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

+1获得详细解释。@Pekka:谢谢;-)我再次编辑,像往常一样提供了一个来自Pascal的示例,质量很好的答案。谢谢你,伙计。这也是任何熟悉这个世界的人所期待的行为!类B的实例实际上也是类A的实例(除非您在OOP中做了一些非常错误的事情)。
$a is an instanceof ClassA
$a is an instanceof ClassB