前言

在开发过程中,也许在一个一个版本的升级中发现整体的开发中程序整体越来越需要框架化;不免自己会想新写一个适合的框架。而框架增加功能最常见的概念就是安装插件那么,如何让框架能有一个插件系统呢?

了解一下

一个插件系统,需要实现:插件载入、插件启用/禁用、插件数据存取、插件卸载、插件注入等基本功能。

插件载入

实现一个最基本的载入方式就是遍历指定目录所有文件夹,然后遍历其目录下的指定文件来确定入口以及插件存在。
你也可以像我们的操作系统一样,有一个“安装”的概念,注册到你的系统当中,不过如果不是很复杂的架构其实没多大必要。

插件启/禁用

每一个插件我们给予一个规范,可以直接访问到一些常量,如app_name,app_id等内容,要求app_id保证唯一性即可。在系统中进行记录,启用的插件的app_id和禁用的插件的app_id这样在之后的执行过程中只要加载启用的插件即可。

插件数据存取

系统在执行插件入口时,系统会提供一个方法来进行基本的文件系统操作,这部分无非就是获取插件的绝对路径,以及控制权限等,仅提供方便。

插件卸载

包括将app_id从系统中全部删除,以及删除插件目录本体

插件注入

注入一般是应用在web应用中,向页面插入HTML代码,只要系统输出页面的逻辑在其之后即可,系统提供方法,允许执行后向最终输出的页面中插入传入的内容。
也有类似事件监听的方法,最简单的实现方法就是给予一个规范,插件的函数本体中以__app_start,__page_ready等以__开头作为保留函数的函数写在插件内,由系统在遇到这些事情时主动地去检查并执行所有启用插件内的这些函数。