一个函数来确定一个类型是否延长或继承另一个PHP?(A function to determine

2019-10-30 04:16发布

是否有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

Answer 1:

您需要使用的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)


Answer 2:

是的,你可以使用

if ($foo instanceof ClassName)
    // do stuff...

编辑 :据我所知,这应该即使是接口工作...



Answer 3:

我可以在电子书籍instanceof运算符 ?

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)


文章来源: A function to determine whether one type extends or inherits another in PHP?
标签: php oop