我实现插件的动态加载的方式如下:卸载动态类在PHP
function processPlugin($plgFile, $db) {
require_once($plgFile);
$plgin = new PlginImpl();
$plgin->setDb($db);
$ret = $plgin->process();
return $ret;
}
每个插件都定义了一个名为PlginImpl
类,它工作正常。但应该可以在返回值process()
内调用更多的插件。这将要求上述规定的同样的方法,但失败:
Fatal error: Cannot redeclare class PlginImpl in ..
请注意,每个插件是一个类,即:
class PlginImpl extends Plugin implements PluginInterface
Plugin
提供一些有用的功能,同时PluginInterface
定义即process()
。
我认为所有插件都被命名为PlginImpl的事实会导致问题,因此我的问题是:在加载require_once
之后,有没有办法卸载一个类(PlginImpl
)?或者我应该遵循完全不同的方法?
编辑 我尝试没有成功以下的事情:
process()
__destruct()
后
- 没有设置
$plgin
- 它并不既不内processPlugin()
也不process
方法中工作
非常感谢!
我尝试使用unset,如上所述,但它只卸载PlginImpl的实例,但定义仍保留在内存中(第二次运行失败)。解构器也不起作用。 – MrG 2009-07-23 15:17:14