博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
15.6. Plugin & Hook 设计与实现
阅读量:6590 次
发布时间:2019-06-24

本文共 1751 字,大约阅读时间需要 5 分钟。

插件系统分为:

插件管理平台

插件探测

插件注册

插件调用

插件注销

15.6.1. 插件管理平台

15.6.1. 插件管理平台

path = $this->directory.'/'; } public function autoload(){ $interfaces = scandir($this->directory); unset($interfaces[0]); unset($interfaces[1]); foreach($interfaces as $interface) { //load all of the plugins $file = $this->path . $interface; if (@file_exists($file)) { include_once($file); $class = basename($interface, ".php"); if (class_exists($class)) { $this->$class = new $class($this); $vars = get_class_vars($class); $entity['name'] = $vars['name']; $entity['description'] = $vars['description']; $entity['author'] = $vars['author']; $entity['class'] = $class; $entity['methods'] = get_class_methods($class); $this->plugins[$class] = $entity; } } } } public function load($plugin){ $file = $this->path . $plugin . '.php'; if (@file_exists($file)) { include_once($file); $class = $plugin; if (class_exists($class)) { $this->$class = new $class($this); $vars = get_class_vars($class); $entity['name'] = $vars['name']; $entity['description'] = $vars['description']; $entity['author'] = $vars['author']; $entity['class'] = $class; $entity['methods'] = get_class_methods($class); $this->plugins[$class] = $entity; } } } public function show(){ print_r($this->plugins); }}

15.6.2. 接口定义

15.6.3. 插件

'; public static $name = 'Demo'; public static $description = 'Demo Simple'; public function __construct(){ } public function test(){ echo 'Hello world!!!'; }}

15.6.4. 测试

load('demo');$plugin->demo->test();echo '=============================';$plugin->autoload();$plugin->show();

原文出处:Netkiller 系列 手札

本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

你可能感兴趣的文章
开源iphone项目
查看>>
敏捷开发--如何准确估算故事
查看>>
C#编写Windows服务程序图文教程
查看>>
Chrome 快捷键
查看>>
使用Android Studio时so文件打包不到APK中
查看>>
js中求水仙花数
查看>>
有一种蓝,是神往,是心醉,是心伤
查看>>
命令查看java的class字节码文件
查看>>
软件下载链接获取方法
查看>>
libopencv_shape.so.3.0: cannot open shared object file: No such file or directory 解决笔记
查看>>
Linux CentOS6.5下编译安装MySQL 5.6
查看>>
[转]CRT与Windows的关系
查看>>
Oracle 的一个非常好的触发器例子
查看>>
从代码里你可以看到什么?
查看>>
[PAL规范]SAP HANA PAL 自组织映射神经网络算法Self -Organizing Maps编程规范SELFORGMAP
查看>>
【写漂亮的博客】让我们的博客更加漂亮,让我们的博客支持响应式布局!
查看>>
mongodb group包(最具体的、最受欢迎、最容易理解的解释)
查看>>
pyimage search研究
查看>>
Windows2003 + IIS6 安装.Net FrameWork 4.0 兼容早期版本的测试
查看>>
大二实习使用的技术汇总(下)
查看>>