PHP中有没有办法知道一个类是否继承了另一个类?
class Controller
{
}
class HomeController extends Controller
{
}
class Dummy
{
}
// What I would like to do
$result = class_extends('HomeController', 'Controller'); /// true
$result = class_extends('Dummy', 'Controller'); /// false
答案 0 :(得分:7)
您需要使用instanceof。
请注意implements
不正确。在这两种情况下都应该使用instanceof
(检查对象是否是继承的类,或者对象是否实现了接口)。
手册示例:
<?php
interface MyInterface
{
}
class MyClass implements MyInterface
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof MyInterface);
?>
给出:
bool(true)
bool(true)
答案 1 :(得分:2)
是的,您可以使用
if ($foo instanceof ClassName)
// do stuff...
编辑:据我所知,这应该适用于接口......
答案 2 :(得分:1)
我可以推荐instanceof
operator吗?
class A { }
class B extends A { }
class C { }
$b = new B;
$c = new C;
var_dump($b instanceof A, $c instanceof A) // bool(true), bool(false)