国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

如何自定義一個(gè)Model?ThinkPHP3.2自定義基類Model的

2020-03-24 18:56:46
字體:
供稿:網(wǎng)友
本篇文章給大家?guī)淼膬?nèi)容是關(guān)于如何自定義一個(gè)Model?ThinkPHP3.2自定義基類Model的用法,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

ThinkPHP 提供了一個(gè) Model 類,供其他的 Model 進(jìn)行繼承。Model 類中是 MVC 中的模型類,它是調(diào)用 持久層 的上層類。感覺這么描述問題很多,但是有什么辦法呢?但是,這個(gè) Model 有時(shí)無法滿足我們的一些需求,因此我們需要自定義一個(gè) Model 類出來,不過自定義的 Model 同樣要繼承 TP 提供的 Model 類,而把我們自定義的 Model 類作為我們項(xiàng)目中的 Model 基類。我怎么感覺我在說繞口令,等等...我有點(diǎn)暈。

無聊的需求

在使用 Java 的開源項(xiàng)目 JeeSite 時(shí),養(yǎng)成了一個(gè)不好的習(xí)慣,習(xí)慣給每張表都增加 create_by、create_date、update_by、update_date、remarks 和 del_flag 這么幾個(gè)字段。如果每張表都有這幾個(gè)字段,那么對(duì)每張表進(jìn)行 insert 時(shí)都會(huì)對(duì)以上的字段進(jìn)行設(shè)置,對(duì)每張表進(jìn)行 update 時(shí)都會(huì)對(duì)其中部分字段進(jìn)行更新,對(duì)每條記錄進(jìn)行 delete 時(shí)都其實(shí)是對(duì) del_flag 字段進(jìn)行 置位。重復(fù)操作很多,一些操作方法被修改。那么,這個(gè)時(shí)候就要自定義一個(gè)自己的 Model 來作為項(xiàng)目的 基類 了,這個(gè) Model 就負(fù)責(zé)干上面我說的那些事情了。

自定義一個(gè) Model

自定義一個(gè) Model,Model 中至少重新 TP 提供的 Model 中的 add、save、delete 和 select 方法。

定義代碼如下:

 ?phpnamespace Admin/Model;use Think/Model; * 項(xiàng)目中其他 Model 類的基類 * 該類繼承自 TP 提供的基類 Modelhtml' target='_blank'>class BaseModel extends Model { * 繼承基類 Model 的 add 方法 * 自動(dòng)插入 id create_by create_date update_by update_date del_flag public function add($data= ,$options=array(),$replace=false) { $data[ id ] = $this- getUuid(); $data[ create_by ] =  $data[ create_date ] = date( Y-m-d H:i:s  $data[ update_by ] =  $data[ update_date ] = date( Y-m-d H:i:s  $data[ del_flag ] = 0  return parent::add($data, $options, $replace); * 獲得 未刪除 的所有數(shù)據(jù) * 記錄是否被刪除通過 del_flag 字段來進(jìn)行確定 public function select($options=array()) { $map[ del_flag ] = 0; $this- where($map); return parent::select($options); * 獲取 全部 的所有數(shù)據(jù) public function selectAll($options=array()) { return parent::select($options); * 更新數(shù)據(jù) * 更新數(shù)據(jù)時(shí),要更新 update_by update_date 兩個(gè)字段 public function save($data= ,$options=array()) { $data[ update_by ] =  $data[ update_date ] = date( Y-m-d H:i:s  return parent::save($data, $options); * 刪除也是更新 * 設(shè)置 刪除 標(biāo)志位即可 public function delete($data= ,$options=array()) { $data[ del_flag ] = 1; return parent::save($data, $options); }

這樣,我們的 BaseModel 就定義好了,以后項(xiàng)目中的 Model 就不再繼承 TP 的 Model 類了,而是繼承我們自定義的 BaseModel 了。

繼承我們定義的基類

繼承的 BaseModel 的方法和繼承 Model 的方法是一樣的,只是使用 use 引入命名空間到當(dāng)前作用域時(shí)的需要修改為我們的命名空間,而不是再去使用 TP 提供的命名空間。代碼如下:

1 ?php2 namespace Admin/Model;3 use Admin/Model/BaseModel;5 class TrunkModel extends BaseModel {

use 引入的命名空間是 Admin/Model/BaseModel ,因?yàn)槲覀兌x的 BaseModel 的命名空間是 Admin/Model,因?yàn)檫@里的 TrunkModel 和 BaseModel 在一個(gè)命名空間下,省去 use 也是可以的。

這樣,在我們用 D 方法實(shí)例化 TrunkModel 的對(duì)象后,使用 add 方法插入數(shù)據(jù)時(shí),就會(huì)先調(diào)用 BaseModel 中的 add 方法了,這樣我們每張表都有的 create_by 等一系列字段就都會(huì)自動(dòng)得到了。

相關(guān)文章推薦:

thinkphp5框架與Android實(shí)現(xiàn)二維碼的生成代碼

Thinkphp批量下載圖片和文件件的代碼實(shí)例

php的curl中post方式和get方式的請(qǐng)求代碼

以上就是如何自定義一個(gè)Model?ThinkPHP3.2自定義基類Model的用法的詳細(xì)內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 上蔡县| 无为县| 革吉县| 固阳县| 宜黄县| 新营市| 剑川县| 巨鹿县| 宁安市| 五常市| 金坛市| 乌拉特后旗| 扎鲁特旗| 甘肃省| 祁连县| 剑阁县| 三台县| 永善县| 黑山县| 镇原县| 逊克县| 托克托县| 双柏县| 桑植县| 浪卡子县| 通道| 香港 | 疏附县| 老河口市| 青河县| 勃利县| 嘉义市| 瑞安市| 舞钢市| 茂名市| 临泽县| 民县| 福建省| 石门县| 江油市| 女性|