插件和钩子
什么是插件和钩子?
在URLOS中,URLOS的应用的插件由钩子组成。如果存在多个版本的钩子,那么插件就是最新版本的钩子。
插件也可以继承别的插件,继承后通过新建的钩子来扩展功能,下面将会介绍到。
创建插件和钩子
在左侧菜单找到 应用->应用插件,点击右上角的添加插件。 插件名称建议采用小驼峰风格,插件版本格式为“v数字_数字_数字”,如:v0_1_2、v9_1_100
切换到其它的选项卡,这里可以填写需要继承的父插件名称,留空表示不继承任何插件。 因为我们接下来用php的网站来测试,而php网站环境需要official:phpWebsites:v0_1_0这个插件,所以添加的插件需要继承它,所以父插件填写为official:phpWebsites:v0_1_0
然后提交保存。
保存成功后回到插件列表,找到刚刚创建的插件,点击右边的钩子列表。
进入钩子列表后,点击右上角的添加钩子按钮。填写钩子类名,插件选择刚刚添加插件。
在钩子内容的代码编辑器里填写钩子内容如下:
<?php namespace plugin\admin\db\pluginExample\v0_1_0; // 命名空间,命名规则:plugin\admin\db\插件名称\插件版本号 use _common\lib\BaseHook as parentHook; // 钩子父类,固定不用改 // hookLoader 为钩子类名,与上面表单填写一致 class hookLoader extends parentHook { /** * 处理并返回安装脚本 * @return array */ public function trafficGetInstallScript($plugin, $hook, $vars, $pluginType, $moduleName) { $installScript = $vars['installScript']; #对installScript内容的相关处理,也可以直接替换 $shellArr = array(); $shellArr[] = $installScript; #应用的安装脚本 #支持多行Shell $shellArr[] = ' #创建test.html并把以下内容添加到test.html echo "<html><head><meta charset=utf-8></head><body>这是在安装脚本里生成的文本</body></html>" > /data/www/test.html '; #返回 return $shellArr; } }
提交保存,这样我们就创建了一个钩子。
将刚刚添加的插件用在URLOS的应用上。 我们先到复制一个网站类型的应用,左侧菜单应用->应用开发,搜索phpWebsite,找到一个php网站环境应用,在右边点击更多->复制应用
切换到扩展设置选项卡,把插件改为我们刚刚新建的插件。
修改后提交保存。
找到这个应用,点击右边的更多按钮,创建服务。部署好后,我们访问在安装脚本里创建的test.html:http://域名/test.html 页面显示出来了我们在安装脚本里添加的文字。表示我们的刚刚在trafficGetInstallScript钩子方法里写的安装脚本成功运行
除了trafficGetInstallScript,我们还提供了很多不同的钩子方法
为了方便理解,请先去了解URLOS应的生命周期