脚本宝典收集整理的这篇文章主要介绍了PHP中的插件机制原理和实例,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP项目中很多用到插件的地方,更尤其是基础程序写成之后很多功能由第三方完善开发的时候,更能用到插件机制,现在说一下插件的实现。特点是无论你是否激活,都不影响主程序的运行,即使是删除也不会影响。
1.插件安装(把插件信息收集进行采集和记忆的过程,比如放到数据库中或者XML中)
1.插件安装及卸载
2.判断激活条件
3.钩子激活
4.运行插件
// $plugins = get_active_plugins();#这个函数请自行实现
//<a href="https://www.js-code.COM/tag/hanshu/" target="_blank" class="keywords">函数</a>实现后的最终数据结构<a href="https://www.js-code.com/tag/xiaoguo/" target="_blank" class="keywords">效果</a>如下
$plugins=array(array("directory"=>"demo","name"=>"DEMO"));
if($plugins)
{
foreach($plugins as $plugin)
{//假定每个<a href="https://www.js-code.com/tag/chajian/" target="_blank" class="keywords">插件</a><a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a>夹中包含<a href="https://www.js-code.com/tag/yige/" target="_blank" class="keywords">一个</a>actions.<a href="https://www.js-code.com/tag/PHP/" target="_blank" class="keywords">PHP</a><a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a>,它是<a href="https://www.js-code.com/tag/chajian/" target="_blank" class="keywords">插件</a>的具体实现
if (@file_exists(STPATH .'plugins/'.$plugin['directory'].'/actions.<a href="https://www.js-code.com/tag/PHP/" target="_blank" class="keywords">PHP</a>'))
{
include_once(STPATH .'plugins/'.$plugin['directory'].'/actions.<a href="https://www.js-code.com/tag/PHP/" target="_blank" class="keywords">PHP</a>');
$class = $plugin['name'].'_actions';
if (class_exists($class))
{
//初始化所有<a href="https://www.js-code.com/tag/chajian/" target="_blank" class="keywords">插件</a>
//$this 是本类的引用
new $class($this);
}
}
}
}
#此处做些日志记录方面的东西
}
/**
}
/**
return $result;
}
}
define(STPATH,"./");
$pluginManager=new PluginManager();
$pluginManager->trigger("demo");
以上是脚本宝典为你收集整理的PHP中的插件机制原理和实例全部内容,希望文章能够帮你解决PHP中的插件机制原理和实例所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。