应用主文件
应用主文件名与应用目录名需要一致(如目录名为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后台菜单
自定义应用在后台左侧栏目的菜单,详见:后台菜单.