Php 发现实现接口的所有类
嗨,我正在使用symfony2框架制作一个网站。我在PHP中定义了一个接口,如:Php 发现实现接口的所有类,php,symfony,Php,Symfony,嗨,我正在使用symfony2框架制作一个网站。我在PHP中定义了一个接口,如: interface AdminPluginInterface { public function getName(); } 现在我想知道实现我的接口的所有类(可由Symfony2 UniversalClassLoader加载),它们的使用方式如下: foreach ($classes as $class) { $class->getName(); } 谢谢你的回答 尝试使用is_a()函数
interface AdminPluginInterface {
public function getName();
}
现在我想知道实现我的接口的所有类(可由Symfony2 UniversalClassLoader加载),它们的使用方式如下:
foreach ($classes as $class)
{
$class->getName();
}
谢谢你的回答 尝试使用is_a()
函数:
foreach ($classes as $class)
{
$classname = $class->getName();
var_dump(is_a($classname,'AdminPluginInterface'));
}
有关更多信息,请查看:
- 这有点旧,但我认为
是您需要的:)因为类只有在使用时才会自动加载,所以您不能在源代码中列出所有类。您只能获取已在调用中使用的类。 一种解决方案是指定一个插件目录,扫描其中的类文件,导入它们,然后检查这些类是否使用
如果您的接口是由某个声明的类实现的,请查看一些要扫描的代码示例Symfony无法知道您的所有类。当您使用未定义的类时,Autoloader会猜测文件的路径。您需要手动迭代项目中的所有文件,并检查其中的类是否实现了接口。这并不容易。你需要它做什么?也许你可以使用另一种解决方案?也许写得不好,我想获得数组
$classes
+1中实现该接口的类列表,指出你不能列出源代码中的所有类,只能列出当前加载的类,如果你不知道自动加载器是如何工作的,这一点很重要。class\u implements
不会按要求搜索所有类。