插件和钩子

什么是插件和钩子?

在URLOS中,URLOS的应用的插件由钩子组成。如果存在多个版本的钩子,那么插件就是最新版本的钩子。 插件也可以继承别的插件,继承后通过新建的钩子来扩展功能,下面将会介绍到。

创建插件和钩子

  1. 在左侧菜单找到 应用->应用插件,点击右上角的添加插件。 插件名称建议采用小驼峰风格,插件版本格式为“v数字_数字_数字”,如:v0_1_2、v9_1_100

    image-20220825150809993

  2. 切换到其它的选项卡,这里可以填写需要继承的父插件名称,留空表示不继承任何插件。 因为我们接下来用php的网站来测试,而php网站环境需要official:phpWebsites:v0_1_0这个插件,所以添加的插件需要继承它,所以父插件填写为official:phpWebsites:v0_1_0

    image-20220825162441918

    然后提交保存。

  3. 保存成功后回到插件列表,找到刚刚创建的插件,点击右边的钩子列表

    image-20220825153438277

    进入钩子列表后,点击右上角的添加钩子按钮。填写钩子类名插件选择刚刚添加插件。

    image-20220829165746150

    钩子内容的代码编辑器里填写钩子内容如下:

    <?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;
        }
    }
    

    提交保存,这样我们就创建了一个钩子。

  4. 将刚刚添加的插件用在URLOS的应用上。 我们先到复制一个网站类型的应用,左侧菜单应用->应用开发,搜索phpWebsite,找到一个php网站环境应用,在右边点击更多->复制应用

    image-20220825162026086

    切换到扩展设置选项卡,把插件改为我们刚刚新建的插件。 image-20220825162331316

    image-20220825165926055

    修改后提交保存。

  5. 找到这个应用,点击右边的更多按钮,创建服务。部署好后,我们访问在安装脚本里创建的test.html:http://域名/test.html 页面显示出来了我们在安装脚本里添加的文字。表示我们的刚刚在trafficGetInstallScript钩子方法里写的安装脚本成功运行

    image-20220825184514877

    除了trafficGetInstallScript,我们还提供了很多不同的钩子方法

    为了方便理解,请先去了解URLOS应的生命周期

Copyright © 广州市万岁云计算有限公司 2020 all right reserved,powered by Gitbook文档最近一次修订时间: 2022-08-31 17:51:44

results matching ""

    No results matching ""