【发布时间】:2009-12-27 10:50:10
【问题描述】:
示例:方法应该返回特定类的实例。如果它来自该类,我如何检查该返回值?
【问题讨论】:
标签: php
示例:方法应该返回特定类的实例。如果它来自该类,我如何检查该返回值?
【问题讨论】:
标签: php
您可以使用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
$a 在某种程度上是ClassA 的实例,因为ClassB 是ClassA 的子类。
当然,$a 也是ClassB 的一个实例——参见它被实例化的那一行。
【讨论】:
您无法检查返回值本身,但可以使用“instanceof”检查返回的类。 (在类似的基础上,您可能会发现“get_class”很有用。)
【讨论】:
您可以使用instanceof 运算符或is_a 函数。
is_a 如果你想传入一个带有类名的字符串(在更动态的代码库中),这很有用。
【讨论】:
if ($object instanceof classname)
....
【讨论】: