thinkphp插件开发(上)
2016-04-13 11:38
716 查看
用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。
( 图 1-1)
(图1-2)
(图 1-3)
(图1-4)
(图1-5)
(图1-6)
(图1-7)
本人用的版本是 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。
( 图 1-1)
(图1-2)
(图 1-3)
(图1-4)
(图1-5)
(图1-6)
(图1-7)
相关文章推荐
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- ThinkPHP关联模型操作实例分析
- thinkphp3.0 模板中函数的使用
- ThinkPHP采用<volist>实现三级循环代码实例
- Thinkphp模板标签if和eq的区别和比较实例分析
- 合并ThinkPHP配置文件以消除代码冗余的实现方法
- ThinkPHP中自定义目录结构的设置方法
- ThinkPHP控制器详解
- ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
- 解析thinkphp中的M()与D()方法的区别
- ThinkPHP采用模块和操作分析
- Thinkphp模板中使用自定义函数的方法
- linux下使用ThinkPHP需要注意大小写导致的问题
- ThinkPHP中FCKeditor编辑器的使用方法
- thinkphp的CURD和查询方式介绍
- THINKPHP支持YAML配置文件的设置方法
- Thinkphp中import的几个用法详细介绍
- 浅谈thinkphp的实例化模型
- ThinkPHP控制器里javascript代码不能执行的解决方法
- ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法