如何判断class方法是否存在

How to determine if a class method exists

我正在将一些 Drupal 7 代码移植到 8,但遇到了一件事。在 D7 中,我构建了一些带有特殊挂钩函数的自定义模块,可以提供一些调试信息。要获得它们的列表,我可以调用 module_implements('debugInfo')。对于 D8,我想搜索,从 modules/custom 目录开始,return 具有 class 的模块列表,其中 public 成员函数名为 'debugInfo'.有没有办法做到这一点?我找到了一个例子,第一个答案在 PHP - get all class names inside a particular namespace,但是如果我有一个基础 class 和我正在寻找的方法,它还会报告所有子 classes 继承基础 class.

因为我只关心我的自定义模块,所以我不能使用 composer 来做这件事。我想要的是一种从起始目录获取已实现 classes 的字典,并从 classes.

获取可用方法列表的方法

听起来您可能想要一个自定义插件管理器。

在 Drupal 8(和现在的 9)中,您可以创建一个插件管理器服务,然后在每个模块中实现插件,以便在需要时调用信息,而不是实现自定义挂钩和搜索。管理器服务会自动发现插件,您可以根据需要调用它们。

创建插件比自定义挂钩要多一些工作,但也更灵活,并为您提供了选择。这些资源可以帮助您解决细节问题:

为了帮助您走捷径,您正在阅读一些内容:从带注释的插件开始。