我正在为自己编写一个小
PHP应用程序,我想添加一个简单的插件可扩展性.
我确实找到了一些关于如何做到这一点的想法,但我觉得它们对我的需求来说太复杂了.
让我解释一下我到底需要什么:
我的应用程序应该执行一个简单的任务,例如:执行Web搜索.
用户应该能够选择使用哪个插件.
例如,您可以选择Google,Yahoo和Bing插件.
每个插件都有一个函数“performWebSearch”,它返回搜索结果.
是的,基本上就是这样.
我可以向您展示我目前使用的代码,以使其更清晰:
要获取现有插件的列表:
$classes_before = get_declared_classes();
foreach(glob("../plugins/*.plugin.php") as $filename) include $filename;
$classes_after = get_declared_classes();
foreach($classes_after as $class)
{
if(!in_array($class, $classes_before))
{
$plugins_available[] = $class;
}
}
这就是“插件”目前的样子:
class google
{
public $name = "Google Search";
public $version = 1.0;
public function performWebSearch($query)
{
// ...
}
}
这有效,但感觉“脏”这样做.
我确信有一种更好的方法可以做到这一点,但我不知道它可能是什么.
我感谢任何帮助.
谢谢.
最佳答案 您的解决方案确实很脏,不应该使用.您可以使用
__autoload()函数加载必要的插件.您可能仍然需要扫描插件目录以查看哪些插件可用,但您应该只加载(包括)必要的插件.