嗨,我正在使用symfony2框架制作一个网站。我在PHP中定义了一个接口,比如:
interface AdminPluginInterface {
public function getName();
}
现在,我想知道所有可由Symfony2 UniversalClassLoader加载的类,它们实现了我的接口,并像一样使用它们
foreach ($classes as $class)
{
$class->getName();
}
谢谢你的回答!
由于类只有在使用时才会自动加载,因此无法在源代码中列出所有类。您只能获取已在使用的调用get_declared_classes
的类。一种解决方案是指定一个插件目录,扫描它以查找类文件,导入它们,然后检查这些类是否使用class_implements
实现了您的接口如果您的接口是由某个已声明的类实现的,请查看以下问题答案,以获取一些要扫描的代码示例
尝试使用is_a()
函数:
foreach ($classes as $class)
{
$classname = $class->getName();
var_dump(is_a($classname,'AdminPluginInterface'));
}
欲了解更多信息,请查看:
is_a()
功能- 这个评论
这有点旧,但我认为
class_implements()
是您需要的:)