本篇文章帶給大家的內容是關於如何自訂一個Model? ThinkPHP3.2自訂基底類別Model的用法,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
ThinkPHP 提供了一個 Model 類,供其他的 Model 進行繼承。 Model 類別中是 MVC 中的模型類,它是呼叫 持久層 的上層類別。感覺這麼描述問題很多,但是有什麼辦法呢?但是,這個Model 有時無法滿足我們的一些需求,因此我們需要自訂一個Model 類別出來,不過自訂的Model 同樣要繼承TP 提供的Model 類,而把我們自訂的Model 類別作為我們專案中的Model基類。我怎麼感覺我在說繞口令,等等...我有點暈。
無聊的需求
在使用Java 的開源專案JeeSite 時,養成了一個不好的習慣,習慣給每張表都增加create_by、create_date、update_by、update_date、remarks 和del_flag 這麼幾個字段。如果每張表都有這幾個字段,那麼對每張表進行insert 時都會對以上的字段進行設置,對每張表進行update 時都會對其中部分字段進行更新,對每條記錄進行delete 時都其實是對del_flag 欄位進行置位。重複操作很多,一些操作方法被修改。那麼,這個時候就要自訂一個自己的 Model 來當專案的 基類 了,這個 Model 就負責幹上面我說的那些事了。
自訂一個 Model
自訂一個 Model,Model 中至少重新 TP 提供的 Model 中的 add、save、delete 和 select 方法。
定義程式碼如下:
<?php namespace Admin\Model; use Think\Model; /** * 项目中其他 Model 类的基类 * 该类继承自 TP 提供的基类 Model */ class BaseModel extends Model { /** * 继承基类 Model 的 add 方法 * 自动插入 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); } /** * 获得 未删除 的所有数据 * 记录是否被删除通过 del_flag 字段来进行确定 */ public function select($options=array()) { $map["del_flag"] = 0; $this->where($map); return parent::select($options); } /** * 获取 全部 的所有数据 */ public function selectAll($options=array()) { return parent::select($options); } /** * 更新数据 * 更新数据时,要更新 update_by update_date 两个字段 */ public function save($data='',$options=array()) { $data["update_by"] = ""; $data["update_date"] = date("Y-m-d H:i:s"); return parent::save($data, $options); } /** * 删除也是更新 * 设置 删除 标志位即可 */ public function delete($data='',$options=array()) { $data["del_flag"] = 1; return parent::save($data, $options); }
#這樣,我們的BaseModel 就定義好了,以後專案中的Model 就不再繼承TP 的Model 類別了,而是繼承我們自訂的BaseModel 了。
繼承我們定義的基底類別
繼承的BaseModel 的方法和繼承Model 的方法是一樣的,只是使用use 引入命名空間到目前作用域時的需要修改為我們的命名空間,而不是再去使用TP 提供的命名空間。程式碼如下:
1 <?php 2 namespace Admin\Model; 3 use Admin\Model\BaseModel; 4 5 class TrunkModel extends BaseModel {
use 引入的命名空間是Admin\Model\BaseModel ,因為我們定義的BaseModel 的命名空間是Admin\Model,因為這裡的TrunkModel 和BaseModel 在一個命名空間下,省略use 也是可以的。
這樣,在我們用D 方法實例化TrunkModel 的物件後,使用add 方法插入資料時,就會先呼叫BaseModel 中的add 方法了,這樣我們每張表都有的create_by 等一系列字段就都會自動得到了。
相關文章推薦:
thinkphp5框架與Android實作二維碼的產生程式碼
以上是如何自訂一個Model? ThinkPHP3.2自訂基底類別Model的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

TheSecretTokeEpingAphp-PowerEdwebSiterUnningSmoothlyShyunderHeavyLoadInVolvOLVOLVOLDEVERSALKEYSTRATICES:1)emplactopCodeCachingWithOpcachingWithOpCacheToreCescriptexecution Time,2)使用atabasequercachingCachingCachingWithRedataBasEndataBaseLeSendataBaseLoad,3)

你應該關心DependencyInjection(DI),因為它能讓你的代碼更清晰、更易維護。 1)DI通過解耦類,使其更模塊化,2)提高了測試的便捷性和代碼的靈活性,3)使用DI容器可以管理複雜的依賴關係,但要注意性能影響和循環依賴問題,4)最佳實踐是依賴於抽象接口,實現鬆散耦合。

是的,優化papplicationispossibleandessential.1)empartcachingingcachingusedapcutorediucedsatabaseload.2)優化的atabaseswithexing,高效Quereteries,and ConconnectionPooling.3)EnhanceCodeWithBuilt-unctions,避免使用,避免使用ingglobalalairaiables,並避免使用

theKeyStrategiestosigantificallyBoostPhpaPplicationPerformenCeare:1)UseOpCodeCachingLikeLikeLikeLikeLikeCacheToreDuceExecutiontime,2)優化AtabaseInteractionswithPreparedStateTementStatementStatementAndProperIndexing,3)配置

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增強codemodocultion,可驗證性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

選擇DependencyInjection(DI)用於大型應用,ServiceLocator適合小型項目或原型。 1)DI通過構造函數注入依賴,提高代碼的測試性和模塊化。 2)ServiceLocator通過中心註冊獲取服務,方便但可能導致代碼耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)啟用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替換loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化進行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。