物件型介面 / 定製操作型別和欄位
物件介面通過繼承AccessControl類來實現,預設允許5個標準物件操作,可以改寫屬性$allowedAc
來限定允許的操作:
class AC_ApiLog extends AccessControl
{
protected $allowedAc = ["get", "query"];
// 預設值為 ["add", "get", "set", "del", "query"]
}
預設get/query操作返回ApiLog的所有欄位,可以用屬性$hiddenFields
隱藏一些欄位,比如不返回"addr"和"tm"欄位:
class AC_ApiLog extends AccessControl
{
protected $hiddenFields = ["addr", "tm"];
}
對於add/set介面,可用$requiredFields
設定必填欄位,用$readonlyFields
設定只讀欄位。
特別地,"id"欄位預設就是隻讀的,無須設定。
示例:實現下面控制邏輯
- "addr"欄位為必填欄位,即在add介面中必須填值,在set介面中不允許置空;
- "tm"欄位為只讀欄位,即在add/set介面中如果填值則忽略(但不報錯);
在add操作中,由程式自動填寫"tm"欄位。
class AC_ApiLog extends AccessControl { protected $requiredFields = ["addr"]; protected $readonlyFields = ["tm"];
// 由add/set介面回撥,用於驗證欄位(Validate),或做自動補全(AutoComplete)工作。 protected function onValidate() { if ($this->ac == "add") { $_POST["tm"] = date(FMT_DT); } }
}
例中使用回撥onValidate來對tm欄位自動填值。 上面用到的常量FMT_DT是框架定義的標準日期格式,常用於格式化日期欄位傳到資料庫。
如果某些欄位是在新增時不是必填,但更新時不可置空,可以用$requiredFields2
來設定;
類似地,新增時可寫,更新時只讀的欄位,用$readonlyFields2
來設定。
相關文章
- mysql表操作(alter)/mysql欄位型別MySql型別
- typescript 介面和物件型別(四)TypeScript物件型別
- sql語句修改欄位型別和增加欄位SQL型別
- [提問交流]建立模型,新增屬性,欄位型別如何設定2位小數的欄位型別模型型別
- Oracle 修改欄位型別和長度Oracle型別
- PHP 操作 mysql blob 資料型別的欄位PHPMySql資料型別
- MongoDB更改欄位型別MongoDB型別
- ES Mapping ,1 欄位型別APP型別
- MySQL欄位型別最全解析MySql型別
- MYSQL SET型別欄位的SQL操作知識介紹MySql型別
- SqlSugar code first 欄位為列舉型別,預設生成資料庫欄位為bigint如何設定為int型別SqlSugar型別資料庫
- 【mongo】mongo 欄位型別互轉Go型別
- 關於mysql中欄位定義的型別int、tinyint區別MySql型別
- MySQL欄位新增註釋,但不改變欄位的型別MySql型別
- Mysql varchar型別欄位為什麼經常定義為255MySql型別
- 多型關聯自定義的型別欄位的處理多型型別
- JSON欄位型別在ORM中的使用JSON型別ORM
- MySQL中TEXT與BLOB欄位型別的區別MySql型別
- Java資料型別與資料庫欄位型別對應關係Java資料型別資料庫
- 聯機重定義修改欄位型別(NVARCHAR2->VARCHAR2)型別
- SAP WM中階儲存型別裡的Full stk rmvl 欄位和Return Storage type欄位型別
- 《JavaScript物件導向精要》之一:基本型別和引用型別JavaScript物件型別
- JS 中普通物件資料型別的基本結構和操作JS物件資料型別
- Gson針對API返回欄位型別不確定的解決辦法API型別
- MySQL VARCHAR型別欄位到底可以定義多長MySql型別
- ORANCLE 資料已存在,修改欄位型別長度型別
- 手寫Spring,定義標記型別Aware介面,實現感知容器物件Spring型別物件
- 欄位管理,為什麼只有新增的時候才自動匹配欄位型別型別
- Javascript中的事件物件和事件型別JavaScript事件物件型別
- ORACLE物件型別表Oracle物件型別
- 資料庫中欄位資料型別以及約束資料庫資料型別
- 值型別和引用型別型別
- task03 資料型別和操作資料型別
- python資料型別-列表建立和操作Python資料型別
- 操作型別之字串型別字串
- SQL字元型欄位按數字型欄位排序實現方法SQL字元排序
- SQL中欄位比較型別不匹配錯誤:‘cannot be cast to’SQL型別AST
- JavaScript值型別和引用型別JavaScript型別
- 型別預設和any型別型別