PHP插件系统实现需求简单整理

追格官方小助手/ 2022年04月11日/ PHP/ 浏览 1157

1. 插件市场上传、下载


插件市场就是发布插件的地方,基本功能就是上传、下载。再加上会员、积分或其他变现机制就是一个比较完善的插件市场了。


2. 加载插件目录的文件


一般的,插件系统都有一个特定的插件目录。系统遍历插件目录,然后依次加载插件入口文件即可。


插件入口文件,可以是一个,也可以多个。不过一个统一集中的入口文件,可能是更好一点的选择。


类似PHP此类脚本语言,动态加载类-函数都是很方便的。


如果是C++或java这类需要编译的语言,往往要用到加载动态库、反射之类的知识。


3. "注册"钩子到系统


"注册"并不是一定要执行一个注册函数,只要能让系统识别到钩子就行。比如,约定钩子必须定义一个函数:say_hello()。

只要加载插件,就执行say_hello。定义say_hello函数本身其实就是注册钩子的过程。


一般的,还是使用"观察者模式",来实现钩子系统。使用成熟的模式,利用成功的经验,开发效率会更高,也更方便他人理解。


一个插件系统钩子的多少,决定了插件的功能有多强大。钩子越多,插件可实现的功能就越多。


不过,钩子越多,曝露的细节也越多,安全性也不得不考虑。


4. 执行钩子函数


使用“观察者模式”执行过程也很好理解。


执行的内容,可以是打印日志,也可以是过滤或装饰,也可以是增加菜单项-展示页面等等。

发表评论

暂无评论,抢个沙发...

客服 工单