繁体   English   中英

发现实现接口的所有类

[英]Discover all class implementing an interface

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

interface AdminPluginInterface {
    public function getName();
}

现在,我想知道实现我的接口的所有可通过Symfony2 UniversalClassLoader加载的类,以如下方式使用它们:

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

谢谢你的回答!

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

尝试使用is_a()函数:

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

有关更多信息,请查看:

这有点旧,但我想

class_implements()

是你需要的:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM