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

Dan*_*ite 0 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
Run Code Online (Sandbox Code Playgroud)

zom*_*bat 7

你需要使用instanceof.

注意这implements是不正确的. instanceof应该在两种情况下都使用(检查对象是否是继承的类,或者对象是否实现了接口).

手册示例:

<?php
interface MyInterface
{
}

class MyClass implements MyInterface
{
}

$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof MyInterface);
?>
Run Code Online (Sandbox Code Playgroud)

得到:

bool(true)
bool(true)
Run Code Online (Sandbox Code Playgroud)