在PHP中卸载动态类
发布时间:2020-12-13 22:34:37 所属栏目:PHP教程 来源:网络整理
导读:我通过以下方式实现了动态加载插件: function processPlugin( $plgFile,$db ) { require_once( $plgFile ); $plgin = new PlginImpl(); $plgin-setDb($db); $ret = $plgin-process(); return $ret;} 每个插件定义一个名为PlginImpl的类,它可以正常工作.但是
我通过以下方式实现了动态加载插件:
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定义了ie(). 我假设所有插件都名为PlginImpl的事实导致问题,因此我的问题是:有没有办法在用require_once加载它后卸载一个类(PlginImpl)?或者我应该采用完全不同的方法? 编辑 >进程后取消设置$plgin() 非常感谢!
由于您在加载类后无法卸载它,因此您唯一的选择是重命名每个插件.
PluginX,PluginY等,但它应该无关紧要,因为您可以强制它们使用插件界面,如您所示. 要加载一个特定的插件,你可以简单地使用solomongaby建议的东西,但不是文件名,而是传递插件的名称..这样的东西: function loadPlugin($pluginName) { require_once $pluginName . '.php'; $plugin = new $pluginName; //do whatever with $plugin } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |