久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

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

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

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

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

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

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

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號