站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        Sight!一個(gè)殺手級(jí)提升Laravel開發(fā)速度的組件現(xiàn)在開源了!

        下面由Laravel教程欄目給大家介紹Sight! ,希望對(duì)需要的朋友有所幫助!

        Sight!一個(gè)殺手級(jí)提升Laravel開發(fā)速度的組件現(xiàn)在開源了!

        今天,給大家推存一個(gè)Laravel的專用組件:Sight
        Laravel開發(fā)速度可以算是最快的了。但是,現(xiàn)在如果加上Sight,那么,你的開發(fā)速度會(huì)更加快。
        Sight做了什么呢?
        Sight是在Server Side實(shí)現(xiàn)了一個(gè)Presenter層。從而讓你把從服務(wù)器中查出的數(shù)據(jù)輕松轉(zhuǎn)換為可展示的數(shù)據(jù)。自從有了Sight,Laravel成了唯一支持Server Side的MVP模式的框架。
        為什么要用Sight呢?
        一、是加快開發(fā)速度。
        二、國(guó)內(nèi)的Phper都了解,大廠是禁止SQL聯(lián)表三個(gè)表以上的。遇到初學(xué)者,會(huì)在FOR循環(huán)中查詢數(shù)據(jù)庫(kù)。如果你禁止了,則還有可能是,他們把相關(guān)ID PLUCK出來(lái)。查出結(jié)果,然后,再FOR循環(huán)中嵌套FOR循環(huán)去查相關(guān)的關(guān)聯(lián)數(shù)據(jù)。
        Sight則是提供了很好的Pluck函數(shù),查出ID后,請(qǐng)求到相關(guān)數(shù)據(jù)交給Sight,Sight會(huì)為你拼接好數(shù)據(jù)。它的做法是通過(guò)關(guān)聯(lián)ID為KEY把數(shù)據(jù)整理好。從而大大提升了程序效率。
        三、Sight的使用相當(dāng)簡(jiǎn)單。
        比如以下示例,幾乎類似于Model的使用。

        namespace AppPresenter  use BardoqiSightPresenter; use BardoqiSightTraitsPresenterTrait; use BardoqiSightEnumsMappingTypeEnum  use BardoqiSightEnumsPaginateTypeEnum  use AppRepositoriesArticleRepository; use AppRepositoriesUserRepository;   class ArticlePresenter extents Presenter {    use PresenterTrait;     public function getArticleList($where)    {        $articleArray = ArticleRepository::getList($where);        $user_ids = $this->selectFields('id','title','created_at','created_by')             ->fromLocal($articleArray,'articles')             ->pluck('created_by');        $users = UserRepository::getUsersWithIds($user_ids);        $this->innerJoinForeign($users,'userss')             ->onRelationByObject(Relation::of()                 ->localAlias('articles')                 ->localField('created_by')                 ->foreignAlias('users')                 ->foreighField('id'))              ->addFieldMappingByObject(FieldMapping::of()                 ->key('created_at')                 ->src('created_at')                 ->type(MappingTypeEnum::METHOD_NAME))             ->addFieldMappingByObject(FieldMapping::of()                 ->key('created_by')                 ->src('user_name')                 ->type(MappingTypeEnum::JOIN_FIELD));                 return $this->toPaginateArray(PaginateTypeEnum::PAGINATE_API);    } }

        上例中,代碼則是把created_at從int轉(zhuǎn)換成了時(shí)間,把created_by從user id轉(zhuǎn)換成了用戶名。
        我們看出:created_at所用的是MappingTypeEnum::METHOD_NAME,這個(gè)方法在哪里呢,是在PresenterTrait中。所以,你也可以定義自己的Trait。
        created_by則是直接讀取關(guān)聯(lián)數(shù)組中的user_name,因?yàn)橛玫氖荕appingTypeEnum::JOIN_FIELD。
        上面代碼看起來(lái)有些長(zhǎng),但是,onRelationByObject()可以改用 onRelation()傳參方式,代碼就短了。
        同樣addFieldMappingByObject(),改用addFieldMappingList()用數(shù)組傳入,代碼也短了。

        Sight遠(yuǎn)遠(yuǎn)不只是這一點(diǎn)功能,它不僅支持MySQL查出的數(shù)據(jù),同時(shí)支持ElasticSearch查出的數(shù)據(jù)。
        雖然是純數(shù)組操作,它一樣也有innerJoin和outerJoin,并且,有hasOne,hasMany ……
        當(dāng)然,還有

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 91久久精品国产成人久久| 欧美日韩国产精品| 久久精品亚洲福利| 国产精品合集一区二区三区| 亚洲精品国产精品乱码不卡√ | 国产欧美日韩精品专区| 99久久久精品免费观看国产| 亚洲国产精品无码久久一线| 四虎影院国产精品| 久久久久久一区国产精品| 国产精品青草视频免费播放 | 99re6在线视频精品免费| 人人妻人人澡人人爽人人精品电影| 日本精品一区二区三区在线视频| 久99久无码精品视频免费播放| 热re99久久精品国产99热| 99久久精品国产麻豆| 国内揄拍高清国内精品对白| 久久精品人人做人人爽97| 亚洲国产精品久久电影欧美| 亚洲Av无码精品色午夜| 亚洲AV永久纯肉无码精品动漫| 亚洲精品视频免费观看| 亚洲国产成人精品久久久国产成人一区二区三区综| 国产精品亚洲专区无码WEB| 国产99视频精品免费视频76| 亚洲国产精品久久久久婷婷软件| 日韩精品一区二区三区四区| 久久亚洲国产欧洲精品一| 精品视频在线免费观看| 久久久九九有精品国产| 亚洲色图国产精品| 国产精品99久久不卡| 国产一区二区精品久久岳| 国产亚洲精品无码拍拍拍色欲| 精品国产成人国产在线观看| 久久精品一区二区三区中文字幕 | 欧美精品一区二区精品久久| 91精品视频观看| 精品无码三级在线观看视频| 欧美日韩国产中文精品字幕自在自线 |