站長(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ā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)
97精品人人妻人人| 99精品久久精品一区二区| 国产精品夜夜春夜夜爽久久小| 久久这里只有精品18| 久久精品国产只有精品2020| 九九热这里只有国产精品| 日韩免费视频播放| 国产精品99re| 成人国产精品2021| 国产av影片麻豆精品传媒| 国产精品香蕉在线一区| 久久亚洲国产成人精品性色| 亚洲精品乱码久久久久久久久久久久| 国产精品主播一区二区| 亚洲国产av无码精品| 精品三级66在线播放| 日韩国产欧美亚洲v片| 日韩成人免费视频| 日韩av片无码一区二区三区不卡| 99久久综合精品五月天| 亚洲国产精品嫩草影院| 一区二区亚洲精品精华液| 美国发布站精品视频| 无码人妻精品一区二区蜜桃网站| 亚洲国产成人99精品激情在线| 2021国产精品自产拍在线观看| 久久国产亚洲精品无码| 久久99精品久久久久子伦| 7m凹凸精品分类大全免费| 久久国产免费观看精品3| 久久国产免费观看精品3| 亚洲国产精品张柏芝在线观看| 亚洲精品日韩专区silk| 精品一区精品二区制服| 精品久久久噜噜噜久久久| 国产成人精品男人的天堂538| 色综合久久精品中文字幕首页| 99久久99这里只有免费费精品| 国内精品伊人久久久久妇| 久热爱精品视频在线| 国产自偷在线拍精品热|