PHP is_subclass_of() 函数用于检查给定的 对象实例或者类名 是否具有指定的类作为其父级之一或实现它。
语法
is_subclass_of(object_or_class, class, allow_string)
参数
object_or_class | 必填。 指定类名或对象实例。如果类不存在,则不会生成错误。 |
class | 必需。 指定类名。 |
allow_string | 可选。 如果设置为 false,则不允许使用 object_or_class 形式的字符串类名称。如果类不存在,这也可以防止调用自动加载器。 |
返回值
如果对象object_or_class,则返回 true ,属于一个类,该类是类的子类,否则为 false。
示例:is_subclass_of() 示例
下面的示例显示了 is_subclass_of 的用法() 函数。
<?php
//定义一个类
class WidgetFactory {
//代码
}
//定义一个子类
class WidgetFactory_Child extends WidgetFactory {
//代码
}
//创建新对象
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();
if (is_subclass_of($WFC, 'WidgetFactory')) {
echo "Yes, \$WFC is a subclass of WidgetFactory\n";
} else {
echo "No, \$WFC is not a subclass of WidgetFactory\n";
}
if (is_subclass_of($WF, 'WidgetFactory')) {
echo "Yes, \$WF is a subclass of WidgetFactory\n";
} else {
echo "No, \$WF is not a subclass of WidgetFactory\n";
}
if (is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {
echo "Yes, WidgetFactory_Child is a subclass of WidgetFactory\n";
} else {
echo "No, WidgetFactory_Child is not a subclass of WidgetFactory\n";
}
?>
上述代码的输出将是:
Yes, $WFC is a subclass of WidgetFactory
No, $WF is not a subclass of WidgetFactory
Yes, WidgetFactory_Child is a subclass of WidgetFactory
示例:is_subclass_of() 使用接口示例
考虑下面的示例,其中此函数与接口一起使用。
<?php
//定义接口
interface MyInterface {
public function MyFunction();
}
//定义接口的类实现
class MyClass implements MyInterface {
public function MyFunction() {
//代码
}
}
//创建新对象
$myObj = new MyClass();
//使用类的对象实例进行检查
if (is_subclass_of($myObj, 'MyInterface')) {
echo "Yes, \$myObj is a subclass of MyInterface\n";
} else {
echo "No, \$myObj is not a subclass of MyInterface\n";
}
//使用类名字符串进行检查
if (is_subclass_of('MyClass', 'MyInterface')) {
echo "Yes, MyClass is a subclass of MyInterface\n";
} else {
echo "No, MyClass is not a subclass of MyInterface\n";
}
?>
上述代码的输出将是:
Yes, $myObj is a subclass of MyInterface
Yes, MyClass is a subclass of MyInterface