thinkphp插件开发(上)

用thinkphp做插件开发之前,可以先参考下onethink的插件模块;

本人用的版本是 tp3.2.3版本(注意 ot 用因为版本问题略有不同),可以通过如下截图了解它的行为扩展和钩子来实现 (多入口) 插件开发:


修改hook系统类(如下图1-1 和 1-2),图1-1 判断导入的插件标签类是否存在 ‘ / ’  (根据导入插件时判断). 

如图1-2中设置的(tags.php)是自动导入的,设置‘app_init ’意思指在应用初始化时就 导入 该标签类.

该类是 Common\Behavior\InitHookBehavior 存在 ‘ / ’ ,所以会走 单入口(限制只有一个run方法).

图1-3  是在 某个应用控制器 里 手动 导入插件,举个下面的例子:

add('demo', 'Editor') ,参数 ’demo‘ 为标签名,在Editor插件类 (图1-5) 里面作方法名,并且用于后面监听调用插件 (必须遵循先导入再监听原则),比如我在视图用自定义函数hook (图1-4);参数  ’Editor‘  为插件名 ,看  图1-1和1-3 的红色圈 就很容易理解它的命名来源, 因为参数 ‘Editor’  不像 aa\bb\cc 这样的形式,不存在 ' \ ',所以会走多入口模式,如此类推. 最后输出  图1-6。我们可以做一些优化,可以参考ot ,插件导入在应用初始化的时候就完成了 (InitHookBehavior类设置的意义),如图1-7,最后 同样 输出 图 1- 6。

thinkphp插件开发(上)_第1张图片

                                                                                                     ( 图 1-1)

thinkphp插件开发(上)_第2张图片

(图1-2)

thinkphp插件开发(上)_第3张图片

(图 1-3)

thinkphp插件开发(上)_第4张图片

(图1-4)

thinkphp插件开发(上)_第5张图片

(图1-5)

thinkphp插件开发(上)_第6张图片

(图1-6)

thinkphp插件开发(上)_第7张图片

(图1-7)

你可能感兴趣的:(thinkphp)