获取扩展类的类的PHP类名?

获取扩展类的类的PHP类名?,php,class,reflection,Php,Class,Reflection,我有一个名为Plugins的PHP类,在这个类中,我有其他plguin风格的PHP类,它们是从Plugins类扩展而来的 有没有一种方法可以获取从Plugins类扩展而来的所有PHP类名?也许在PHP中使用类似于反射的东西 因此,在我下面的示例中,我可以得到以下值: MyTestPlugin 另一个测试插件 是的,您可以通过反射执行以下操作: Maybe:or@Jeremy Thank这两个词的混合让我得到了想要的结果!我会为其他人发布的。我刚刚发布了一个解决方案,我是在你发布这个答案时

我有一个名为
Plugins
的PHP类,在这个类中,我有其他plguin风格的PHP类,它们是从
Plugins
类扩展而来的

有没有一种方法可以获取从
Plugins
类扩展而来的所有PHP类名?也许在PHP中使用类似于
反射的东西

因此,在我下面的示例中,我可以得到以下值:

  • MyTestPlugin
  • 另一个测试插件

是的,您可以通过反射执行以下操作:



Maybe:or@Jeremy Thank这两个词的混合让我得到了想要的结果!我会为其他人发布的。我刚刚发布了一个解决方案,我是在你发布这个答案时从评论中想到的。这是类似的,但您使用的ReflectionClass非常酷!谢谢,我才意识到我犯了个大错。我试图基本上包括我所有插件的插件文件,然后为找到的每个插件类实例化一个新类。这就是我需要类名的原因,但这也意味着这些类还不会被实例化,所以它们还不会作为子类存在!因此,我可能需要解析实际的PHP文件来获得我的名字,看起来似乎是错的……事实证明,即使该类没有实例化,这些仍然有效,只需定义它,它就会显示出来……完美@JasonDavis如果您不想全部加载,您可以使用
令牌\u get\u all
(无论如何,您必须通过
文件\u get\u内容
读取文件)。几年前,我遇到了一个类似的问题,在加载前必须检查以避免名称冲突。可能这个方法比我的更有效+1:)问题就在我心里fav@fusion3k也许,但我很感激你的回答…看到不同的做事方式总是很高兴的,整个ReflectionCLass的东西都很有趣,因为在这之前的15年里我从来没有使用过它!我几个月前就发现了!
abstract class Plugins
{
    // class properties and methods
}


class MyTestPlugin extends PLugins
{
    // class properties and methods
}


class AnotherTestPlugin extends PLugins
{
    // class properties and methods
}
$children  = array();
foreach( get_declared_classes() as $class )
{
    $reflected = new ReflectionClass( $class );
    if( $reflected->isSubclassOf( 'Plugins' ) ) $children[] = $class;
}
<?php

abstract class Plugins
{
    // class properties and methods
}


class MyTestPlugin extends Plugins
{
    // class properties and methods
}


class AnotherTestPlugin extends Plugins
{
    // class properties and methods
}

$plugin1 = new MyTestPlugin();
$plugin2 = new AnotherTestPlugin();


$parentClassName = 'Plugins';

foreach(get_declared_classes() as $class){
    if(is_subclass_of($class, $parentClassName)){
        echo $class.' == is a child class of '.$parentClassName.'<br>';
    }

}

?>