部署及语法规则

配置文件

放在扩展根目录的 config.php 文件
<?php
return array(
    'properties' => array(                                  //扩展相关属性
        'name'        => '扩展名称',                         //显示给用户的扩展名
        'version'     => '1.0',                             //当前版本号
        'description' => '描述',                            //简单说明扩展的功能
        'changeLog'   => array(                             //按时间升序说明每版本的更新内容
            '1.0'     => '更新说明'
        )
    ),
    'database' => array(                                    //指定备份数据库
        'default' => array()                                //配置文件连接池 => 未来扩展参数
    ),
    'options' => 'main_demo::test',                         //选项界面,当点击扩展管理界面中的选项按钮时会调用main_demo对象的test方法
    'update' => array(                                      /*接受一个数组参数 { 可参看 of_base_extension_manager::setupExtension
                                                                'callMsgFun' : 输出消息(call_user_func支持的格式)
                                                                'nowVersion' : 升级时为旧版本号,新安装为null,
                                                                'newVersion' : 更新后版本,卸载为null,
                                                                'position'   : 触发位置(before或after),
                                                                'state'      : 安装状态,可修改false或字符串打印信息 以停止安装(before)或改变结果(after)
                                                            }*/
        'before' => 'main_demo::updateBeforeOrAfter',       //更新前调用
        'after'  => 'main_demo::updateBeforeOrAfter'        //更新后调用, 卸载无此回调
    ),
    'matches' => array(
        'main_demo::test' => array(                         //当访问以下路径时会调用main_demo对象的test方法
            'demo_ofControllers::viewTest',                 //匹配路径参考为调度的"类名::方法"
            'of_ex::func',                                  //of_ex在_of.extension.exclusive可配置, func为可变参数, 访问地址要附加参数&e=扩展键
                                                            //访问方式 "框架路径/index.php?c=of_ex&a=func&e=extKey"
            '@demo_ofControllers.*@i'                       //以@开始的字符串,按正则处理
        )
    )
);

类文件

类文件语法如下,存储在/main/demo.php文件中,在编译时会自动添加头与尾,编译后生成的相对类名为'main_demo'
<?php
/**
 * 描述 : 如果存在main方法,将在类文件对象初始化时调用
 */
function main(&$params) {
    //这是一个对象,所以要用$this调用方法
}

/**
 * 描述 : 配置文件中 'main_demo::test' 的入口文件
 * 参数 : 
 *     &params : 可修改调度信息 {
 *          "class"  : &调度类名, 
 *          "action" : &调度方法, 
 *          "check"  : &校验参数
 *      }
 */
function test(&$params) {
    //打印绑定参数
    print_r($params);
    //打印常量演示 更多方法
    print_r($this->_getConst());
}

使用钩子

公有钩子
产品和扩展可以使用,可由产品和扩展触发
私有钩子
扩展内部使用的钩子,由扩展触发
内置钩子
核心内部钩子,有核心触发,避免扩展触发

发布扩展 访问 框架目录/index.php?c=of_base_extension_tool 来实现以下操作

扩展打包扩展界面管理需要整合的接口 of_base_extension_manager::dataManager
当需要发布扩展时,进入'扩展界面管理'中找到'扩展打包',这时底层会将数据库中所属扩展的表及相关数据备份,同时会封装扩展拥有的多语言包,作为扩展的安装升级数据
之后打开扩展文件夹,里面的内容就可以作为一个版本发布了
封装多语言扩展界面管理需要整合的接口 of_base_extension_manager::updateLanguage
当通过语言包工具编写完语言包后,进入'扩展界面管理'中找到'封装语言包',这时底层会更新扩展内部的语言包
扩展发布
可以直接将打包的扩展文件夹拷走,或访问 OF_URL/?c=of_base_extension_tool 对要发布的扩展进行加密加密的扩展在该扩展文件夹中/_info/encrypt文件夹内

使用扩展

扩展安装扩展界面管理需要整合的接口 of_base_extension_manager::setupExtension
将需要安装的扩展拷贝到程序的扩展目录中(程序根目录config.inc.php文件中_extension指定的位置要有读写权限),将扩展文件夹改成任意仅包含数字和字母的名称
之后,进入'扩展界面管理'中找到'安装扩展',等待提示安装完成后,便可使用了
扩展暂停与运行扩展界面管理需要整合的接口 of_base_extension_manager::changeState
进入'扩展界面管理'中找到'切换状态'
扩展备份与恢复扩展界面管理需要整合的接口 of_base_extension_manager::dataManager
进入'扩展界面管理'中找到'备份与恢复',按提示操作
扩展卸载扩展界面管理需要整合的接口 of_base_extension_manager::removeExtension
进入'扩展界面管理'中找到'卸载',按提示操作