筋斗云接口编程 / 接口返回前回调

来源:互联网 发布:3des算法的c语言实现 编辑:程序博客网 时间:2024/04/29 23:53

接口返回前回调

示例:添加订单到Ordr表时,自动添加一条”创建订单”日志到OrderLog表,可以这样实现:

class AC1_Ordr extends AccessControl{    protected function onValidate()    {        if ($this->ac == "add") {            ...             $this->onAfterActions[] = function () {                $orderId = $this->id;                $sql = sprintf("INSERT INTO OrderLog (orderId, action, tm) VALUES ({$orderId},'CR','%s')", date('c'));                execOne($sql);            };        }    }}

属性$this->onAfterActions是一个回调函数数组,在操作结束时被回调。
属性$this->id可用于取add操作结束时的新对象id,或get/set/del操作的id参数。

对象接口调用完后,还会回调onAfter函数,也可以在这个回调里面操作。
此外,如要在get/query接口返回前修改返回数据,用onHandleRow回调函数更加方便。

示例:实现接口

Ordr.get(id) -> {id, status, ..., statusStr?}Ordr.query() -> tbl(同get接口字段...)- status: "CR" - 新创建, "PA" - 已付款- statusStr: 状态名称,用中文表示,当有status返回时则同时返回该字段
class AC1_Ordr extends AccessControl{    static $statusStr = ["CR" => "未付款", "PA" => "待服务"];    // get/query接口会回调    protected function onHandleRow(&$rowData)    {        if (isset($rowData["status"])) {            $st = $rowData["status"];            $rowData["statusStr"] = @self::$statusStr[$st] ?: $st;        }    }}
0 0