ClassCMS

应用主文件

应用主文件名与应用目录名需要一致(如目录名为test,则主文件名为test.php).

主文件内必须存在与应用标识同名的类.

主文件代码示例:

<?php
class test {//主文件内类名必须与应用标识一致
    function xxxx(){//方法名
        //代码
    }
    function init(){
        //代码
    }
    function install(){
        //安装代码
    }
    function config(){
        //应用变量
    }
    function xxxx3($a,$b){//其他方法,带参数
        //代码
    }
}

主文件中默认了一些方法名,在进行安装卸载等操作时,可以供ClassCMS调用,完成对应的操作.这些方法并不是必须存在的.

init 初始化

init方法会在当前脚本进程第一次执行本应用时被调用,返回应用的初始化信息,如模板目录,模板缓存时间.

function init(){
    return array('template_dir' => 'template','template_cache' => 0);
}

template_dir:为当前应用的模板目录,如不返回,则默认为应用根目录.

template_cache:模板缓存时间.

template_class:使用第三方的应用模板作为当前应用的模板,填写第三方应用标识即可.

install安装,uninstall卸载,start启动,stop停止,upgrade更新

这些方法会在后台(或第三方应用)对本应用执行相应的操作时被调用,如后台安装应用时,install将被调用.

如方法返回字符串,则会在后台安装完成时,弹出字符串提示,如方法返回return E('错误信息') 则会提示安装错误信息,也可返回 按钮信息

function install(){
    //安装方法,可以写入程序的初始化数据.
    //应用被安装时,系统会自动判断当前应用的php版本是否符合要求,依赖应用是否安装.
}
function uninstall(){
    //卸载方法,删除应用残余的数据.注意:卸载应用时,系统会自动删除当前应用的(权限,钩子,路由,输入框,模型,栏目,字段)信息,无需在此方法内删除.
}
function start(){
    //启动方法,后台启用此应用时会调用此方法.
    //应用被启动时,系统会自动判断当前应用的php版本是否符合要求,依赖应用是否安装,如果符合要求,此应用下的(钩子,路由,权限,模型,输入框)将被允许使用.
}
function stop(){
    //停止方法,后台停用此应用时会调用此方法,应用被停用时,此应用下的(钩子,路由,权限,模型,输入框)将被禁用.
}
function upgrade($oldversion){
    //更新方法,应用在更新时,将会运行此方法,默认附带旧版本参数,可以在方法内编写更新逻辑.
    //应用更新时,会自动同步模型数据(包括模型内的页面字段变量).
    //为防止覆盖用户栏目列表,栏目数据不会自动同步,需手动编写更新逻辑.
}
function table(){
    //返回当前应用使用的数据库表,系统会在安装应用时自动创建表,卸载应用时系统会自动删除表.
    return array('xxx'=>array('title'=>'varchar(255)','enabled'=>'int(1)'),'xxx2'=>array('title'=>'varchar(255)','content'=>'text'));
}

config 应用变量

config方法内返回输入框的数组,可以在后台本应用管理页面内设置应用变量.

inputhash为输入框的标识,可以在input表内查看,常见如:文本框 text;多行文本:textarea;开关:switch.

当后台应用管理中的设置保存时,会重新加载hook与route方法,可以在hook与route方法内判断应用变量值,再返回相应的钩子与路由数组.

//如一个邮件发送应用,后台可以配置,邮箱,邮箱密码等信息
function config() {
    $configs=array();
    $configs[]=array('configname'=>'邮箱','hash'=>'email','inputhash'=>'text','tips'=>'','tabname'=>'','defaultvalue'=>'');
    $configs[]=array('configname'=>'邮箱密码','hash'=>'password','inputhash'=>'text','tips'=>'您的邮箱密码','tabname'=>'','defaultvalue'=>'');
    $configs[]=array('configname'=>'邮箱服务器','hash'=>'smtp','inputhash'=>'text','tips'=>'服务器地址,如smtp.qq.com','tabname'=>'','defaultvalue'=>'');
    $configs[]=array('configname'=>'启用','hash'=>'isopen','inputhash'=>'switch','tips'=>'','tabname'=>'hook','defaultvalue'=>'1');
    Return $configs;//返回输入框数组
}

应用变量可以使用config函数调用或设置,

$email=config('email');//调用当前应用下的email变量
config('email','admin@q.com');//将当前应用的email变量值修改为admin@q.com
$xxx=config('xxx',false,'otherclass');//调用其他应用下的xxx变量

hook钩子

返回应用的钩子列表数组,详见 钩子

钩子列表并不是实时存入数据库的,只有在应用(启用,更新,后台应用设置)时才会将钩子列表存入数据库.

route路由

返回应用的路由列表数组,详见 路由

路由列表并不是实时存入数据库的,只有在应用(启用,更新,后台应用设置)时才会将路由列表存入数据库.

table数据库表

应用安装时自动创建数据库表.

function table(){
    return array(
        'tablename1'=>array('title'=>'varchar(255)','enabled'=>'int(1)','content'=>'text','addtime'=>'bigint(10)'),
        'tablename2'=>array('title'=>'varchar(255)','enabled'=>'int(1)')
    );
}

应用升级时,系统会同步字段信息(如字段有新增则会自动创建新字段,字段格式有变更也会同步,减少字段并不会自动删除旧字段)

auth后台权限

应用在后台的方法列表,可以在应用权限设置时,对不同角色列表设置不同的方法权限,详见:应用权限.

开启应用后台权限设置需要在配置文件内设置auth:1;

menu后台菜单

自定义应用在后台左侧栏目的菜单,详见:后台菜单.