在PHP中确定一种类型是扩展还是继承另一种类型的函数?

时间:2009-12-03 00:03:28

标签: php oop

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

3 个答案:

答案 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)