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