发现实现接口的所有类

时间:2012-03-06 08:42:13

标签: php symfony

您好我正在使用symfony2框架来建立一个网站。我在PHP中定义了一个接口,如:

interface AdminPluginInterface {
    public function getName();
}

现在我想知道所有可以通过Symfony2 UniversalClassLoader加载的类来实现我的界面,使用它们如下:

foreach ($classes as $class)
{
    $class->getName();
}

感谢您的回答!

3 个答案:

答案 0 :(得分:2)

尝试使用is_a()功能:

foreach ($classes as $class)
{
    $classname = $class->getName();
    var_dump(is_a($classname,'AdminPluginInterface'));
}

有关详细信息,请查看:

答案 1 :(得分:2)

由于类只有在使用时才会自动加载,因此您无法列出源代码中的所有类。您只能获取已调用get_declared_classes的已使用的类。 一种解决方案是指定一个plugins目录并扫描它以获取类文件,导入它们然后使用class_implements检查这些类是否实现了您的接口 查看this question answers以获取一些代码示例,以扫描您的接口是否由某个声明的类

实现

答案 2 :(得分:-1)

这有点旧,但我认为

class_implements()

是你需要的:)