维护app的生命周期

app如何维护自己的生命周期

在app的整个生命周期, 存在5种变迁. 分别是安装, 更新, 启用, 暂停, 卸载. 每个app都可以自行维护每种变迁时的相应处理.

方法简单, 只需要在app/{$app_id}目录下定义task.php文件. 并根据需要写相应的回调函数.

<?php
class desktop_task {
...
}

补充知识: 日志记录

为了调试和运维的方便, 需要在关键的节点记录log. 记录方式:调用kernel::log()函数

在整个维护周期, 如果是通过命令行工具进行维护会直接显示输出, 如果是通过web方式进行维护会记录在相应的日志文件内

install - 安装

通常的场景, 在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 标题名

参数检测

检测安装参数是否正确, 通过回调函数checkenv()来实现.

<?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分成三个步骤

  • pre_install
  • install 系统级安装
    • 安装系统当前状态下所支持的所有app的资源, 参考:资源探测器
  • post_install

其中install属于系统级安装, 其余两个可以定义自己的回调函数

pre_install
在系统级安装前完成, 通过回调函数pre_install()来实现.

通常不需要

参数:
    array $options 安装参数, 内容为install_options()函数所定义的子集.
返回:
    null
post_install

在系统级安装后完成, 通过回调函数post_install()来实现.

初始化安装的过程基本在此回调函数内实现, 列举一二作为参考

uninstall - 卸载

如果编写了install()回调函数, 请务必要使用uninstall的回调函数. 屁股是要擦干净的

pre_uninstall

回调函数pre_uninstall()

参数:
    无
返回:
    null

post_uninstall

回调函数post_uninstall()

参数:
    无
返回:
    null

update - 更新

pre_update

回调函数pre_update()
参数:
    无
返回:
    null

post_update

回调函数post_update()

参数:
    string $version 当前app版本
返回:
    null

active - 启用

pre_enable

回调函数pre_enable()

参数:
    无
返回:
    null

post_enable

回调函数post_enable()

参数:
    无
返回:
    null

pause - 暂停

pre_disable

回调函数pre_disable()

参数:
    无
返回:
    null

post_disable

回调函数post_disable()

参数:
    无
返回:
    null