在app的整个生命周期, 存在5种变迁. 分别是安装, 更新, 启用, 暂停, 卸载. 每个app都可以自行维护每种变迁时的相应处理.
方法简单, 只需要在app/{$app_id}目录下定义task.php文件. 并根据需要写相应的回调函数.
<?php
class desktop_task {
...
}
补充知识: 日志记录 为了调试和运维的方便, 需要在关键的节点记录log. 记录方式:调用kernel::log()函数 在整个维护周期, 如果是通过命令行工具进行维护会直接显示输出, 如果是通过web方式进行维护会记录在相应的日志文件内
通常的场景, 在app安装时需要基本的外部参数, 例如: base app, 需要在安装时传入db_host, db_user, db_host等参数, 根据参数进行配置文件的生成和数据库的连接
如果安装过程需要参数, 需要写回调函数install_options(), 返回值为二维数组. 一维key值表示参数名称
class desktop_task{ function install_options(){ return array( 'admin_uname'=>array('type'=>'text','vtype'=>'required','required'=>true,'title'=>'用户名','default'=>'admin'), 'admin_password'=>array('type'=>'password','vtype'=>'required','required'=>true,'title'=>'密码'), 'admin_password_re'=>array('type'=>'password','vtype'=>'required','vtype'=>'samePas','required'=>true,'title'=>'重复密码'), ); }
表-1 参数属性
属性 | 作用 |
---|---|
type | 输入方式:text/select/password |
default | 默认值, 在没有输入参数时使用默认值 |
options | 选项, 当type属性设置为select时, 会从options中取得需选项, 表现为一维数组 |
options_callback | 选项的函数回调, 当type设置为select, 当选项不能通过枚举的形式列举出来时. 需要回调函数来返回相应的options数组. 使用options_callback时不要为options属性赋值. 格式为array(app => {$app_id}, 'method' => {$method_name} ) |
title | 标题名 |
<?php
class base_task{
function checkenv($options){
if(!$options['db_host']){
echo app::get('base')->_("Error: 需要填写数据库主机")."\n";
return false;
}
if(!$options['db_user']){
echo app::get('base')->_("Error: 需要填写数据库用户名")."\n";
return false;
}
if(!$options['db_name']){
echo app::get('base')->_("Error: 请选择数据库")."\n";
return false;
}
...
}
...
参数: options 安装参数, 内容为install_options()函数所定义的子集. 返回: bool 检测通过为true, 反之则false
安装一个app分成三个步骤
其中install属于系统级安装, 其余两个可以定义自己的回调函数
通常不需要
参数: array $options 安装参数, 内容为install_options()函数所定义的子集. 返回: null
在系统级安装后完成, 通过回调函数post_install()来实现.
初始化安装的过程基本在此回调函数内实现, 列举一二作为参考
如果编写了install()回调函数, 请务必要使用uninstall的回调函数. 屁股是要擦干净的
回调函数pre_uninstall()
参数: 无 返回: null
回调函数post_uninstall()
参数: 无 返回: null
参数: 无 返回: null
回调函数post_update()
参数: string $version 当前app版本 返回: null
回调函数pre_enable()
参数: 无 返回: null
回调函数post_enable()
参数: 无 返回: null
回调函数pre_disable()
参数: 无 返回: null
回调函数post_disable()
参数: 无 返回: null