成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在Repository模式下使用laravel

netScorpion / 2392人閱讀

摘要:倉(cāng)庫(kù)地址文檔地址清晰的目錄結(jié)構(gòu)只負(fù)責(zé)定義模型如模型關(guān)聯(lián)和等負(fù)責(zé)處理這個(gè)表相關(guān)的所有業(yè)務(wù)邏輯不只是注入相關(guān)的任何都可以注入代碼定位迅速只負(fù)責(zé)處理簡(jiǎn)單的邏輯獲取轉(zhuǎn)發(fā)數(shù)據(jù)它應(yīng)該是簡(jiǎn)潔干凈的所有的驗(yàn)證類(lèi)所有的模型用戶相關(guān)的所有模型目錄結(jié)構(gòu)應(yīng)與一致

laravel-repository

倉(cāng)庫(kù)地址Github

Repository文檔地址

清晰的目錄結(jié)構(gòu) Models只負(fù)責(zé)定義模型(如:模型關(guān)聯(lián),scope,get和set attribute等) Repository負(fù)責(zé)處理這個(gè)表相關(guān)的所有業(yè)務(wù)邏輯, 不只是注入model, 相關(guān)的redis任何cache都可以注入,代碼定位迅速 Controllers 只負(fù)責(zé)處理簡(jiǎn)單的邏輯,獲取轉(zhuǎn)發(fā)數(shù)據(jù),它應(yīng)該是 簡(jiǎn)潔干凈

App

Http

Controller

Admin

IndexController

UserController

ConfigController

...

Request(所有的request驗(yàn)證類(lèi))

Admin

Index

StoreRequest

UpdateRequest

DestroyRequest

User

...

Config

...

Request.php

Models (所有的model模型)

User(用戶相關(guān)的所有模型)

User.php

UserExt.php

UserMessage.php

Config

Config.php

...

BaseModel.php

Repositories (目錄結(jié)構(gòu)應(yīng)與model一致,結(jié)構(gòu)清晰)

User(用戶相關(guān)的所有倉(cāng)庫(kù))

UserRepository.php

UserExtRepository.php

UserMessageRepository.php

...

安裝并使用
composer require littlebug/laravel-repository

mkdir app/Http/Requests

# 創(chuàng)建屬于你自己的Request驗(yàn)證基類(lèi)

# 就像下面這個(gè)文件
關(guān)于一鍵生成代碼
# 在將命令注入到你的laravel 項(xiàng)目以后

# 輸入

php artisan list

# 如果你看到下面這些提示,那么可以開(kāi)始快速生成代碼了!~

 core
  core:controller               生成 Controller 
     {--table=}   指定表名稱 [ 指定該參數(shù)會(huì)通過(guò)表生成視圖文件 ]
     {--name=}    指定名稱 可以帶命名空間 [ --name=Home/IndexController 或者 HomeIndexController ]
     {--r=}       指定 Repository 需要從 Repositories 目錄開(kāi)始; 默認(rèn)使用控制器同名 Repository
     {--request=} 指定 request 目錄; 需要從 Requests 目錄開(kāi)始; 默認(rèn)使用控制器命名空間
     {--pk=}      指定主鍵名稱,默認(rèn)id
  core:generate                 生成 controller|model|repository|request|views 
    {--table=}      指定表名稱 [ 支持指定數(shù)據(jù)庫(kù),例如:log.crontabs ]
    {--path=}       指定目錄 [ 沒(méi)有傳遞絕對(duì)路徑,否則使用相對(duì)對(duì)路徑 從 app/Models 開(kāi)始 ]  
    {--model=}      model名稱 默認(rèn)生成使用表名稱生成
  core:model 
# 讓我們來(lái)試一下

# 在commands幫助文檔的提示下生成代碼

# 如果你的項(xiàng)目用到了數(shù)據(jù)庫(kù)前綴,不要忘了去database.php中添加,否則會(huì)找不到table

# 舉個(gè)栗子,以member_message表為例

php artisan core:generate --table=member_message --path=Member --controller=Member/MemberMessageController

# 在終端中你可以看到下面的結(jié)果

文件 [ /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打印數(shù)據(jù)

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

# 你應(yīng)該嘗試一些你的數(shù)據(jù)庫(kù)中存在的表,而不是機(jī)械的去復(fù)制粘貼我的栗子
 

自定義
# 也許你想自定義自己的Repository

# 創(chuàng)建一個(gè) Repository.php 在 appRepository

# 對(duì)它進(jìn)行擴(kuò)展和部分重寫(xiě),比如success 和error 方法, 可以改為自己喜歡的數(shù)據(jù)格式
這種模式下開(kāi)發(fā), 項(xiàng)目結(jié)構(gòu)異常清晰, Repository的使用簡(jiǎn)潔到爆, 只需要花短短幾分鐘看一下他的使用說(shuō)明,你會(huì)喜歡上它的

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31661.html

相關(guān)文章

  • Laravel 中設(shè)計(jì)模式的實(shí)戰(zhàn)分享

    摘要:如何在實(shí)戰(zhàn)中能應(yīng)用上設(shè)計(jì)模式,我思考了接近兩年。最開(kāi)始我接觸設(shè)計(jì)模式,出發(fā)點(diǎn)就是為了重構(gòu)代碼,以便更好的復(fù)用和測(cè)試。也就是說(shuō)基本是被當(dāng)成一組靜態(tài)函數(shù)使用的。 MVC是Laravel自帶的,大家也多少都會(huì)用一些。今天我們不談MVC,談一些大中型項(xiàng)目的設(shè)計(jì)思路。 前言 雖然標(biāo)題說(shuō)是設(shè)計(jì)模式,但是我并不打算去講什么singleton、strategy、factory,不知道為什么,每次看到...

    李義 評(píng)論0 收藏0
  • 推薦:好用的 Laravel Repository

    摘要:但在中也不可避免的基礎(chǔ)模式,上述問(wèn)題仍然存在。這樣可以完全分離和的依賴。最開(kāi)始在中使用是通過(guò)定義大量的來(lái)注入,,實(shí)現(xiàn)具體的工作類(lèi)。但是像鏈接調(diào)用仍然沒(méi)有解決,為些我們開(kāi)發(fā)出了新的倉(cāng)庫(kù)包。目前此包已經(jīng)使用在好幾個(gè)項(xiàng)目中目前運(yùn)行良好。 什么是Repository模式,如何使用Repository模式 這里就不再啰嗦了,請(qǐng)參見(jiàn)以下幾個(gè)鏈接如何使用 Repository 模式?關(guān)于 Repos...

    MAX_zuo 評(píng)論0 收藏0
  • LaravelRepository Pattern(倉(cāng)庫(kù)模式)——概念篇

    摘要:確實(shí),要獨(dú)立一個(gè)操作層出來(lái),確實(shí)會(huì)增加大量代碼,非常繁瑣。如果你是小項(xiàng)目,未必需要使用這一模式。但如果是年以上的復(fù)雜大型項(xiàng)目,這種模式的好處就比較明顯了。如果你是純新手,建議你暫時(shí)不要往下看,先把用得比較熟練后再回來(lái)學(xué)習(xí)。 為什么要學(xué)習(xí)Repository Pattern(倉(cāng)庫(kù)模式) Repository 模式主要思想是建立一個(gè)數(shù)據(jù)操作代理層,把controller里的數(shù)據(jù)操作剝離出來(lái)...

    tomener 評(píng)論0 收藏0
  • laravel 開(kāi)發(fā)輔助工具

    摘要:按照最初提出者的介紹,是銜接數(shù)據(jù)映射層和領(lǐng)域?qū)又g的一個(gè)紐帶,作用相當(dāng)于一個(gè)在內(nèi)存中的域?qū)ο蠹稀?蛻舳藢?duì)象把查詢的一些實(shí)體進(jìn)行組合,并把它們提交給。同時(shí)支持登錄過(guò)期時(shí)間設(shè)置,登錄之前,登錄之后事件處理。 laravel 開(kāi)發(fā)輔助工具 配置 添加服務(wù)提供商 將下面這行添加至 config/app.php 文件 providers 數(shù)組中: providers => [ ... ...

    stormjun 評(píng)論0 收藏0
  • 為什么你應(yīng)該使用 Repository

    摘要:原文來(lái)自模式為了保持代碼的整潔性和可讀性,使用是非常有用的。這是一個(gè)很典型的一段代碼使用和數(shù)據(jù)庫(kù)交互,這段代碼工作的很正常,但是層對(duì)于而言將是緊耦合的。 原文來(lái)自http://vegibit.com/laravel-repository-pattern/ Repository 模式 為了保持代碼的整潔性和可讀性,使用Repository Pattern 是非常有用的。事實(shí)上,我們也不必...

    Simon 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<