ThinkPHP 3.2 模型(Model)命名規範
阿新 • • 發佈:2018-12-16
模型命名規範
ThinkPHP 對資料庫的表名和模型類的命名遵循一定的規範。首先資料庫的表名和欄位全部採用小寫形式,模型類的命名規則是除去表字首的資料表名稱,並且首字母大寫,然後加上模型類的字尾定義。一些例子如下:
表名(不含字首) | 模型名稱(類名) | 檔名 | 例子 |
---|---|---|---|
user | UserModel | UserModel.class.php | class UserModel extends Model{} |
user_group | UserGroupModel | UserGroupModel.class.php | class UserGroupModel extends Model{} |
提示:系統以駝峰命名法來識別帶下劃線的表名。
當專案中的表命名規則和 ThinkPHP 中的約定不符時(常常會有這種情況),ThinkPHP 允許對 Model 類的 tableName 和 trueTableName 屬性進行設定以達到相容的目的。
tableName 屬性
當表字首和系統設定的字首(DB_PREFIX)一致而表名和模型名稱不一致時,可設定此屬性,例如表名稱為 users ,而模型名稱為 UserModel ,那麼需要在模型類設定:
class UserModel extends Model{ protected $tableName = 'users'; }
trueTableName 屬性
如果表的字首跟系統設定的不一致(表名和模型名可能一致)時,需要設定模型的 trueTableName 屬性:
class UserModel extends Model{ protected $trueTableName = 'my_user'; }
注意 trueTableName 值為完整的表名(包括字首)。
dbName 屬性
dbName 屬性定義模型當前對應的資料庫名稱,只有當前的模型類對應的資料庫名稱和配置檔案不同的時候才需要定義:
protected $dbName = 'cdb';
表字尾
當設定了表字尾時,系統會自動識別表字尾,那麼對應的定義如下:
表名(不含字首) | 字尾 | 模型名稱(類名) | 檔名 |
---|---|---|---|
log001 | 001 | LogModel | LogModel.class.php |
當然如果不定義字尾,也可以單獨每個模型類定義 tableName 屬性,這個視乎實際情況來採取何種策略。