应用方法注解
通过方法注解,可更加方便将当前方法添加到路由/钩子/后台权限中,不再需要添加到route/hook/auth方法中
系统会在应用安装时扫描主文件与模块文件中的所有方法,将有注解的方法存储至对应的数据表中
注解功能需php>=5.6 制作应用插件时需在应用配置文件内限定php:>=5.6
/**
* @name 方法名称
* @desc 方法描述
* @hook test:test
* @route /test/
* @auth 测试方法
*/
function test(){
echo(6666);
return true;
}
hook 钩子注解
单行注解:
* @hook cms:notFound
指定被hook的function与执行条件:
* @hook function=cms:article:add;requires=post.title\=666666\;config.enabled!\=1
示例
/**
* @name 404
* @desc 一个方法实现自定义404功能
* @hook cms:notFound
*/
function test404(){
@header("HTTP/1.1 404 Not Found");
echo('page not found');
return true;
}
/**
* @name 自定义文章页内容
* @desc 通过监听钩子返回新的数据
* @hook cms:nowArticle:=
*/
function diyArticle($class,$args,$return){
if(isset($return['content'])) {
$return['content']=$return['content'].'<br>新的内容';
Return $return;
}
}
/**
* @name 禁止删除栏目id=66618103下的文章
* @desc 通过requires判断是否允许执行钩子
* @hook function=cms:article:del;requires=args.1.cid\=66618103
*/
function delArticle($config){
return false;
}
requires内的=与;需使用\进行转义
route 路由注解
单行注解:
* @route /test/
指定路由的hash:
* @route hash=test;uri=/test2/
示例
/**
* @name 666666
* @route /666666/
*/
function testPage(){
echo('666666');
return true;
}
/**
* @name 网址匹配
* @route /userinfo/(name)/
*/
function userinfo(){
echo('name:'.$_GET['name']);
return true;
}
/**
* @name 路由标识
* @route hash=page2;uri=/page_2/
*/
function testPage2(){
echo('page2.');
return true;
}
//可以通过route('page2')获取到此路由具体的访问网址,如未开启伪静态,访问网址为/index.php/page_2/
当路由未指定标识时,标识=方法,模块内的路由标识为 模块_方法,多行路由注解会在标识末尾增加序号
auth 后台权限
* @auth 测试
当 auth=-1 时,允许后台未登入用户访问此方法,如用户注册,登入等
当 auth=0 时,允许所有后台登入用户访问此方法,如文章列表页, 由方法内部自行判断是否允许访问
当 auth=权限名 时,后台登入用户须有对应权限才可访问此方法(当auth=1时,auth=name注解)
当 auth=分组名:权限名 时,后台勾选角色权限时将分组显示
示例
/**
* @name 后台测试
* @auth 测试
*/
function adminTest(){
echo('adminTest');
return true;
}
后台方法访问: /admin/?do=应用标识:方法名 或 /admin/?do=应用标识:模块名:方法名
auth注解实时生效,不需要重启应用