非標準物件介面

天笑發表於2017-03-14

非標準物件介面

物件的增刪改查(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的眾多回撥函式不會被觸發。 在非標準介面實現時,可以呼叫類中其它介面。

相關文章