非标准对象接口
对象的增删改查(add/set/get/query/del共5个)接口称为标准接口。
可以为对象增加其它非标准接口,例如取消订单接口:
Ordr.cancel(id)
应用逻辑
- 权限: AUTH_USER
- 用户只能操作自己的订单
只要在相应的访问控制类中,添加名为api_{非标准接口名}
的函数即可:
class AC1_Ordr extends AccessControl
{
// "Ordr.cancel"接口
function api_cancel() {
// 不需要checkAuth
$this->id = mparam("id");
$this->onValidateId();
...
execOne("UPDATE Ordr SET status='CA' WHERE id={$this->id}");
// 不会回调onAfter等函数
}
}
非标准对象接口与与函数型接口写法类似,但AccessControl的众多回调函数不会被触发。
在非标准接口实现时,可以调用类中其它接口。