亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

Laravel Repository 模式

2020-03-22 20:25:04
字體:
來源:轉載
供稿:網友
  • Repository 模式

    為了保持代碼的整潔性和可讀性,使用Repository Pattern是非常有用的。事實上,我們也不必僅僅為了使用這個特別的設計模式去使用Laravel,然而在下面的場景下,我們將使用OOP框架Laravel去展示如何使用repositories使我們的Controller層不再那么啰嗦、更加解耦和易讀。下面讓我們更深入的研究一下。

    不使用repositories

    其實使用Repositories并不是必要的,在你的應用中你完全可以不使用這個設計模式的前提下完成絕大多數的事情,然而隨著時間的推移你可能把自己陷入一個死角,比如不選擇使用Repositories會使你的應用測試很不容易,(swapping out implementations)具體的實現將會變的很復雜,下面我們看一個例子。
    HousesController.php

    <?php    html' target='_blank'>class HousesController extends BaseController {        public function index()        {            $houses = House::all();            return View::make('houses.index',compact('houses'));        }                    public function create()        {            return View::make('houses.create');        }        public function show($id)        {            $house = House::find($id);            return View::make('houses.show',compact('house'));        }    }

      

    這是一個很典型的一段代碼使用Eloquent數據庫交互,這段代碼工作的很正常,但是controller層對于Eloquent而言將是緊耦合的。在此我們可以注入一個repository創建一個解耦類型的代碼版本,這個解耦的版本代碼可以使后續程序的具體實現更加簡單。

    使用repositories

    其實完成整個repository模式需要相當多的步驟,但是一旦你完成幾次就會自然而然變成了一種習慣了,下面我們將詳細介紹每一步。

    1.創建Repository文件夾

    首先我們需要在app文件夾創建自己Repository文件夾repositories,然后文件夾的每一個文件都要設置相應的命名空間。

    2: 創建相應的Interface

    第二步創建對應的接口,其決定著我們的repository類必須要實現的相關方法,如下例所示,在此再次強調的是命名空間一定要記得加上。
    HouseRepositoryInterface.php

    <?php namespace AppRepositories;interface HouseRepositoryInterface {    public function selectAll();        public function find($id);}

      

    3:創建對應的Repository

    現在我們可以創建我們repository類 來給我們干活了,在這個類文件中我們可以把我們的絕大多數的數據庫查詢都放進去,不論多么復雜。如下面的例子
    DbHouseRepository.php

    <?php namespace AppRepositories;use House;class DbHouseRepository implements HouseRepositoryInterface {        public function selectAll()    {        return House::all();    }    public function find($id)    {        return House::find($id);    }}

      

    4:創建后端服務提供

    首先你需要理解所謂服務提供,請參考手冊服務提供者
    BackendServiceProvider.php

    <?php namespace AppRepositories;use IlluminateSupportSeriveProvider;class BackSerivePrivider extends ServiceProvider {    public function register()    {        $this->app->bind('AppRepositoriesHouseRepositoryInterface', 'AppRepositoriesDbHouseRepository');    }}

      

    當然你也可以新建一個文件夾主要放我們的provider相關文件。
    上面一段代碼主要說的是,當你在controller層使用類型提示HouseRepositoryInterface,我們知道你將會使用DbHouseRepository.

    5:更新你的Providers Array

    其實在上面的代碼中,我們已經實現了一個依賴注入,但如果我們要使用在此我們是需要手動去寫的,為了更為方面,我們需要增加這個providers到app/config/app.php 中的providers數組里面,只需要在最后加上AppRepositoriesBackendServiceProvider::class,

    6:最后使用依賴注入更新你的controller

    當我們完成上面的那些內容之后,我們在Controller只需要簡單的調用方法代替之前的復雜的數據庫調用,如下面內容:
    HousesController.php

    <?php use AppepositoriesHouseRepositoryInterface;class HousesController extends BaseController {    public function __construct(HouseRepositoryInterface $house)    {        $this->house = $house;    }    public function index()    {        $houses = $this->house->selectAll();        return View::make('houses.index', compact('houses'));            }    public function create()    {        return View::make('houses.create');    }    public function show($id)    {        $house = $this->house->find($id);                return View::make('houses.show', compact('house'));    }}

      這樣 整個模式的轉換就完成了

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    欧美中文字幕视频| 日韩欧美视频一区二区三区| 国产成人jvid在线播放| 久久精品视频在线播放| 亚洲人精选亚洲人成在线| 久久国产精品久久国产精品| 成人欧美一区二区三区黑人| 精品国产91久久久| 在线观看国产成人av片| 亚洲人成网站777色婷婷| 久久久亚洲国产| 欧美精品久久久久久久免费观看| 成人免费网视频| 亚洲视频在线观看网站| 欧美午夜片欧美片在线观看| 国产精品99一区| 日韩视频―中文字幕| 亚洲综合中文字幕在线| 国语自产在线不卡| 欧美色欧美亚洲高清在线视频| 欧美在线视频导航| 日韩在线中文字幕| 色黄久久久久久| 久久久亚洲影院| 久久久电影免费观看完整版| 色综合久综合久久综合久鬼88| 伊人久久久久久久久久久久久| 日产精品久久久一区二区福利| 日韩欧美a级成人黄色| 久久九九热免费视频| 欧美激情一区二区三级高清视频| 日韩精品一区二区三区第95| 57pao成人国产永久免费| 国产亚洲激情视频在线| 欧美成人午夜视频| 欧美国产亚洲精品久久久8v| 国产91久久婷婷一区二区| 68精品国产免费久久久久久婷婷| 爱福利视频一区| 国产69久久精品成人看| 亚洲人成欧美中文字幕| 国产亚洲美女精品久久久| 国产精品黄视频| 亚洲精品动漫久久久久| 亚洲一区亚洲二区| 久久国产精品久久久久| 日韩av成人在线观看| 岛国视频午夜一区免费在线观看| 亚洲片在线观看| 日韩av成人在线| 狠狠操狠狠色综合网| 欧美大片大片在线播放| 日韩精品免费综合视频在线播放| 日韩成人在线视频观看| 午夜精品久久久久久99热| 欧美日韩国产在线播放| 亚洲视频一区二区三区| 国产精品av在线播放| 国产精品女人久久久久久| 这里只有精品在线观看| 91夜夜揉人人捏人人添红杏| 97婷婷大伊香蕉精品视频| 亚洲风情亚aⅴ在线发布| 日韩在线www| 91色精品视频在线| 欧美韩国理论所午夜片917电影| 亚洲欧美一区二区三区情侣bbw| 国产精品吴梦梦| 色婷婷综合久久久久中文字幕1| 欧美大全免费观看电视剧大泉洋| 日韩视频永久免费观看| 性欧美亚洲xxxx乳在线观看| 91麻豆桃色免费看| 国产视频观看一区| 日韩美女视频免费在线观看| 亚洲xxxx在线| 伊人青青综合网站| 色综合久综合久久综合久鬼88| 精品久久久久久久大神国产| 亚洲精品国产精品国自产观看浪潮| 日韩在线播放视频| 欧美精品日韩www.p站| 亚洲精品国产精品久久清纯直播| 亚洲aaa激情| 奇米一区二区三区四区久久| 久久综合久久88| 欧美最顶级的aⅴ艳星| 亚洲国产中文字幕久久网| 亚洲一区二区三区乱码aⅴ| 色樱桃影院亚洲精品影院| 亚洲人成网站色ww在线| 91精品在线看| 久久精品99国产精品酒店日本| 在线中文字幕日韩| 亚洲石原莉奈一区二区在线观看| 欧美情侣性视频| 国产一区二中文字幕在线看| 成人国产精品免费视频| 欧美性生交大片免费| 欧美成人午夜激情在线| 日本欧美黄网站| 欧美国产精品日韩| 久久国产精品久久久久久| 激情久久av一区av二区av三区| 97超级碰碰碰| 国产一区二区三区直播精品电影| 亚洲国产成人精品女人久久久| 国产精品91在线| 欧美成人精品一区二区| 国产精品一香蕉国产线看观看| 欧美日韩色婷婷| 亚洲free性xxxx护士hd| 日本伊人精品一区二区三区介绍| 亚洲美腿欧美激情另类| 欧美激情aaaa| 午夜欧美不卡精品aaaaa| 91精品国产91久久久久久吃药| 欧美电影在线播放| 蜜臀久久99精品久久久无需会员| 日韩欧美高清在线视频| 69国产精品成人在线播放| 欧美高清videos高潮hd| 欧美精品精品精品精品免费| 日韩av片免费在线观看| 91精品成人久久| 欧美日韩午夜视频在线观看| 精品亚洲永久免费精品| 欧美精品www在线观看| 欧洲亚洲免费在线| 91探花福利精品国产自产在线| 庆余年2免费日韩剧观看大牛| 欧美精品videossex性护士| 国模精品视频一区二区| 日韩在线观看免费高清完整版| 96sao精品视频在线观看| 亚洲国产欧美一区| 欧美午夜影院在线视频| 国产一区二区三区在线视频| 欧美激情视频免费观看| 国产成人精品视频在线| 国产热re99久久6国产精品| 欧美成人sm免费视频| 亚洲欧洲国产精品| 精品免费在线视频| 538国产精品一区二区在线| 国产一区欧美二区三区| 国产精品普通话| 韩国美女主播一区| 亚洲精品一区中文字幕乱码| 久久久久久久久久久av| 国产精品美女久久| 久久成人18免费网站| 国产mv免费观看入口亚洲| 亚洲成人激情小说| 国产精品美女在线| 色综合天天综合网国产成人网| 国产日韩中文字幕在线| 欧美激情第1页| 国产精品久久久久aaaa九色| 色婷婷亚洲mv天堂mv在影片| 久久精品国产免费观看| 91精品美女在线| 亚洲free性xxxx护士白浆| 欧美一级大片在线观看|