检查一个类是否是另一个类的子类

2022-08-30 17:59:45

我想在不创建实例的情况下检查一个类是否是另一个类的子类。我有一个类,它接收一个类名作为参数,作为验证过程的一部分,我想检查它是否属于特定的类系列(以防止安全问题等)。有什么好的方法可以做到这一点吗?


答案 1

is_subclass_of() 将正确检查一个类是否扩展了另一个类,但如果两个参数相同(将是 ),则不会返回。trueis_subclass_of('Foo', 'Foo')false

简单的相等性检查将添加所需的功能。

function is_class_a($a, $b)
{
    return $a == $b || is_subclass_of($a, $b);
}

答案 2

是的,有反射

<?php

class a{}

class b extends a{}

$r = new ReflectionClass( 'b' );

echo "class b "
    , (( $r->isSubclassOf( new ReflectionClass( 'a' ) ) ) ? "is" : "is not")
    , " a subclass of a";

推荐