我正在寻找一个像程序一样的插件管理器,它启动一个循环,在“插件”文件夹中搜索 .php 文件。我需要它以某种方式运行main()
在每个文件中调用的函数,然后该函数将运行其他函数。我怎么能在没有其他main()
功能冲突的情况下做到这一点,还有更好的选择吗?
问问题
55 次
1 回答
1
如果你想使用函数,那么你可以命名它们。但是对于像这样的 id 使用类。例如,每个插件可能有一个PluginConfiguration
类,它可以是命名空间的,也可以是PluginName\PluginConfiguration
伪造的PluginName_PluginConfiguration
。
然后,您可以直接实例化这些类并调用任何内容,例如:
class MyCool_Plugin implements PluginInterface {
// note the interface wouldnt be absolutely necessary,
// but making an interface or abstract class for this would be a good idea
// that way you can enforce a contractual API on the configuration classes
public function __construct() {
// do whatever here
}
public function main() {
// do whatever here
}
}
更新:
顺便说一句,“PluginInterface”包括什么?
一个接口定义了一个类必须实现的所有方法(函数)。您可以使用它在该接口的任何类上强制执行最低 API implements
。根据您的描述,这将是一种方法,main
尽管在开发过程中您可能会发现您需要/想要添加更多。
Interface PluginInterface {
public function main();
}
您还可以使用类型提示来强制执行特定的方法签名。例如,假设您总是想将Application
加载插件的实例注入插件本身,以便它可以注册内容或设置其他内容。在这种情况下,您可能会这样做:
Interface PluginInterface {
public function main(Application $app);
}
于 2012-09-22T00:16:36.900 回答