下方由Laravel
#1教學課程! ,希望對需要的朋友有幫助!
今天,可以為大家推存一個Laravel的專用元件:Sight
Laravel開發速度可以算是最快的了。但是,現在如果加上Sight,那麼,你的開發速度會更快。
Sight做了什麼呢?
Sight是在Server Side實作了一個Presenter層。從而讓你把從伺服器中查出的資料輕鬆轉換為可展示的資料。自從有了Sight,Laravel成了唯一支援Server Side的MVP模式的框架。
為什麼要用Sight呢?
一、加快開發速度。
二、國內的Phper都了解,大廠是禁止SQL聯表三個表以上的。遇到初學者,會在FOR循環中查詢資料庫。如果你禁止了,還有可能是,他們把相關ID PLUCK出來。查出結果,然後,再FOR循環中嵌套FOR循環去查相關的關聯資料。
三、Sight的使用相當簡單。
例如以下範例,幾乎類似於Model的使用。
namespace App\Presenter use Bardoqi\Sight\Presenter; use Bardoqi\Sight\Traits\PresenterTrait; use Bardoqi\Sight\Enums\MappingTypeEnum use Bardoqi\Sight\Enums\PaginateTypeEnum use App\Repositories\ArticleRepository; use App\Repositories\UserRepository; 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); } }
上面程式碼看起來有些長,但是,onRelationByObject()可以改用 onRelation()傳參方式,程式碼就短了。
同樣addFieldMappingByObject(),改用addFieldMappingList()用陣列傳入,程式碼也短了。
雖然是純數組操作,它一樣也有innerJoin和outerJoin,而且,有hasOne,hasMany …
當然,還有更多的功能,這個你就要仔細看文檔了。 Sight試圖解決你查出資料後,將其轉換成可展示資料中的不爽,它做得很好,真的能讓你Coding More Happy; Coding More Quickly!Github 網址: https://github.com/BardoQi/Sight######Sight-殺手級提升Laravel開發速度的元件現在開源了!趕緊FORK,趕緊STAR!###以上是Sight!一個殺手級提升Laravel開發速度的元件現在開源了!的詳細內容。更多資訊請關注PHP中文網其他相關文章!