PHP在实例化之前检查类父级

Ema*_*mad 2 php oop inheritance parent-child

我要做的是在实例化之前检查一些类继承

class A{}
class B extends A{}
class C{}
Run Code Online (Sandbox Code Playgroud)

我想在继续之前检查B,C类的继承,如果它们继承A然后继续前进,否则我将不会实例化.

我不想要的:

// That's not what i want
$B = new B();
var_dump($B instance of A); // Valid => true
Run Code Online (Sandbox Code Playgroud)

我想要的是:

// That's what i want
var_dump(B instance of A); // Not valid 
Run Code Online (Sandbox Code Playgroud)

但我只是想知道这是否可行.

谢谢.

sch*_*rht 6

是的,它有可能:

is_subclass_of();
Run Code Online (Sandbox Code Playgroud)

以下示例来自http://php.net/manual/en/function.is-subclass-of.php:

// usable only since PHP 5.0.3
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";
}
Run Code Online (Sandbox Code Playgroud)