摘要:倉庫地址文檔地址清晰的目錄結構只負責定義模型如模型關聯和等負責處理這個表相關的所有業務邏輯不只是注入相關的任何都可以注入代碼定位迅速只負責處理簡單的邏輯獲取轉發數據它應該是簡潔干凈的所有的驗證類所有的模型用戶相關的所有模型目錄結構應與一致
laravel-repository
倉庫地址Github
Repository文檔地址
清晰的目錄結構 Models只負責定義模型(如:模型關聯,scope,get和set attribute等) Repository負責處理這個表相關的所有業務邏輯, 不只是注入model, 相關的redis任何cache都可以注入,代碼定位迅速 Controllers 只負責處理簡單的邏輯,獲取轉發數據,它應該是 簡潔干凈 的App
Http
Controller
Admin
IndexController
UserController
ConfigController
...
Request(所有的request驗證類)
Admin
Index
StoreRequest
UpdateRequest
DestroyRequest
User
...
Config
...
Request.php
Models (所有的model模型)
User(用戶相關的所有模型)
User.php
UserExt.php
UserMessage.php
Config
Config.php
...
BaseModel.php
Repositories (目錄結構應與model一致,結構清晰)
User(用戶相關的所有倉庫)
UserRepository.php
UserExtRepository.php
UserMessageRepository.php
...
安裝并使用composer require littlebug/laravel-repository mkdir app/Http/Requests # 創建屬于你自己的Request驗證基類 # 就像下面這個文件關于一鍵生成代碼
# 在將命令注入到你的laravel 項目以后 # 輸入 php artisan list # 如果你看到下面這些提示,那么可以開始快速生成代碼了!~ core core:controller 生成 Controller {--table=} 指定表名稱 [ 指定該參數會通過表生成視圖文件 ] {--name=} 指定名稱 可以帶命名空間 [ --name=Home/IndexController 或者 HomeIndexController ] {--r=} 指定 Repository 需要從 Repositories 目錄開始; 默認使用控制器同名 Repository {--request=} 指定 request 目錄; 需要從 Requests 目錄開始; 默認使用控制器命名空間 {--pk=} 指定主鍵名稱,默認id core:generate 生成 controller|model|repository|request|views {--table=} 指定表名稱 [ 支持指定數據庫,例如:log.crontabs ] {--path=} 指定目錄 [ 沒有傳遞絕對路徑,否則使用相對對路徑 從 app/Models 開始 ] {--model=} model名稱 默認生成使用表名稱生成 core:model
# 讓我們來試一下 # 在commands幫助文檔的提示下生成代碼 # 如果你的項目用到了數據庫前綴,不要忘了去database.php中添加,否則會找不到table # 舉個栗子,以member_message表為例 php artisan core:generate --table=member_message --path=Member --controller=Member/MemberMessageController # 在終端中你可以看到下面的結果 文件 [ /Users/wanchao/www/lara-test/app/Models/Member/MemberMessage.php ] 生成成功 文件 [ /Users/wanchao/www/lara-test/app/Repositories/Member/MemberMessageRepository.php ] 生成成功 文件 [ /Users/wanchao/www/lara-test/app/Http/Requests/Member/MemberMessage/UpdateRequest.php ] 生成成功 文件 [ /Users/wanchao/www/lara-test/app/Http/Requests/Member/MemberMessage/DestroyRequest.php ] 生成成功 文件 [ /Users/wanchao/www/lara-test/app/Http/Requests/Member/MemberMessage/StoreRequest.php ] 生成成功 # 添加路由 routes/web.php Route::group(["namespace" => "Member","prefix" => "member"], function ($route) { $route->get("index", "MemberController@indexAction"); $route->get("message", "MemberMessageController@indexAction"); }); ### 修改MemberMessageController ### 在MemberMessageController中dd打印數據 public function index() { $filters = Helper::filter_array(request()->all()); $filters["order"] = "id desc"; $list = $this->memberMessageRepository->paginate($filters); dd($list); } # 終端 php artisan serve vist localhost:8001/member/message # 你應該嘗試一些你的數據庫中存在的表,而不是機械的去復制粘貼我的栗子自定義
# 也許你想自定義自己的Repository # 創建一個 Repository.php 在 appRepository # 對它進行擴展和部分重寫,比如success 和error 方法, 可以改為自己喜歡的數據格式這種模式下開發, 項目結構異常清晰, Repository的使用簡潔到爆, 只需要花短短幾分鐘看一下他的使用說明,你會喜歡上它的
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31661.html
摘要:如何在實戰中能應用上設計模式,我思考了接近兩年。最開始我接觸設計模式,出發點就是為了重構代碼,以便更好的復用和測試。也就是說基本是被當成一組靜態函數使用的。 MVC是Laravel自帶的,大家也多少都會用一些。今天我們不談MVC,談一些大中型項目的設計思路。 前言 雖然標題說是設計模式,但是我并不打算去講什么singleton、strategy、factory,不知道為什么,每次看到...
摘要:但在中也不可避免的基礎模式,上述問題仍然存在。這樣可以完全分離和的依賴。最開始在中使用是通過定義大量的來注入,,實現具體的工作類。但是像鏈接調用仍然沒有解決,為些我們開發出了新的倉庫包。目前此包已經使用在好幾個項目中目前運行良好。 什么是Repository模式,如何使用Repository模式 這里就不再啰嗦了,請參見以下幾個鏈接如何使用 Repository 模式?關于 Repos...
摘要:確實,要獨立一個操作層出來,確實會增加大量代碼,非常繁瑣。如果你是小項目,未必需要使用這一模式。但如果是年以上的復雜大型項目,這種模式的好處就比較明顯了。如果你是純新手,建議你暫時不要往下看,先把用得比較熟練后再回來學習。 為什么要學習Repository Pattern(倉庫模式) Repository 模式主要思想是建立一個數據操作代理層,把controller里的數據操作剝離出來...
摘要:按照最初提出者的介紹,是銜接數據映射層和領域層之間的一個紐帶,作用相當于一個在內存中的域對象集合。客戶端對象把查詢的一些實體進行組合,并把它們提交給。同時支持登錄過期時間設置,登錄之前,登錄之后事件處理。 laravel 開發輔助工具 配置 添加服務提供商 將下面這行添加至 config/app.php 文件 providers 數組中: providers => [ ... ...
摘要:原文來自模式為了保持代碼的整潔性和可讀性,使用是非常有用的。這是一個很典型的一段代碼使用和數據庫交互,這段代碼工作的很正常,但是層對于而言將是緊耦合的。 原文來自http://vegibit.com/laravel-repository-pattern/ Repository 模式 為了保持代碼的整潔性和可讀性,使用Repository Pattern 是非常有用的。事實上,我們也不必...
閱讀 1014·2021-11-22 14:56
閱讀 975·2021-11-11 16:54
閱讀 7555·2021-09-23 11:55
閱讀 3000·2021-09-22 15:57
閱讀 2788·2021-08-27 16:25
閱讀 667·2019-08-30 15:55
閱讀 1657·2019-08-30 15:43
閱讀 1593·2019-08-30 14:23