站長資訊網
        最全最豐富的資訊網站

        Sight!一個殺手級提升Laravel開發速度的組件現在開源了!

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

        Sight!一個殺手級提升Laravel開發速度的組件現在開源了!

        今天,給大家推存一個Laravel的專用組件:Sight
        Laravel開發速度可以算是最快的了。但是,現在如果加上Sight,那么,你的開發速度會更加快。
        Sight做了什么呢?
        Sight是在Server Side實現了一個Presenter層。從而讓你把從服務器中查出的數據輕松轉換為可展示的數據。自從有了Sight,Laravel成了唯一支持Server Side的MVP模式的框架。
        為什么要用Sight呢?
        一、是加快開發速度。
        二、國內的Phper都了解,大廠是禁止SQL聯表三個表以上的。遇到初學者,會在FOR循環中查詢數據庫。如果你禁止了,則還有可能是,他們把相關ID PLUCK出來。查出結果,然后,再FOR循環中嵌套FOR循環去查相關的關聯數據。
        Sight則是提供了很好的Pluck函數,查出ID后,請求到相關數據交給Sight,Sight會為你拼接好數據。它的做法是通過關聯ID為KEY把數據整理好。從而大大提升了程序效率。
        三、Sight的使用相當簡單。
        比如以下示例,幾乎類似于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轉換成了時間,把created_by從user id轉換成了用戶名。
        我們看出:created_at所用的是MappingTypeEnum::METHOD_NAME,這個方法在哪里呢,是在PresenterTrait中。所以,你也可以定義自己的Trait。
        created_by則是直接讀取關聯數組中的user_name,因為用的是MappingTypeEnum::JOIN_FIELD。
        上面代碼看起來有些長,但是,onRelationByObject()可以改用 onRelation()傳參方式,代碼就短了。
        同樣addFieldMappingByObject(),改用addFieldMappingList()用數組傳入,代碼也短了。

        Sight遠遠不只是這一點功能,它不僅支持MySQL查出的數據,同時支持ElasticSearch查出的數據。
        雖然是純數組操作,它一樣也有innerJoin和outerJoin,并且,有hasOne,hasMany ……
        當然,還有

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产午夜精品一本在线观看 | 99久久99久久精品国产片| 久久精品视屏| 97久久精品午夜一区二区| 香港三级精品三级在线专区| 91精品免费久久久久久久久| 97精品国产一区二区三区| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 精品久久久久久久中文字幕| 国产精品亚洲片在线va| 精品无码av一区二区三区| 中文字幕精品亚洲无线码一区应用 | 国产精品成人观看视频免费| 久久夜色精品国产噜噜噜亚洲AV | 久久精品中文字幕无码绿巨人 | 老司机亚洲精品影院| 欧美人与动牲交a欧美精品| 国产2021久久精品| 国内精品在线视频| 国内精品久久久久久99蜜桃| 一区二区国产精品| 国精品产露脸自拍| 91精品国产色综久久| 99精品免费视频| 国内揄拍高清国内精品对白| 尤物TV国产精品看片在线| 久久国产综合精品五月天| 国产AⅤ精品一区二区三区久久| 久久国产精品99久久久久久老狼 | 亚洲精品制服丝袜四区| 亚洲国产精品ⅴa在线观看| 日韩精品中文字幕第2页| 久久久久无码精品国产app| 久久se精品一区二区影院| 国产成人久久精品麻豆一区| 99久久精品国产毛片| 99熟女精品视频一区二区三区| 在线观看日韩精品| 午夜精品视频在线| 91精品久久久久久无码| 国产精品成人99久久久久91gav|