Sight-杀手级Laravel开发提速组件现已开源!今天给大家推荐一个Laravel特有的组件:SightLaravel可以算是开发速度最快的了。但是,如果你现在加上Sight,你的开发速度会更快。视力有什么作用?Sight在服务器端实现了Presenter层。这使您可以轻松地将从服务器检索到的数据转换为可显示的数据。从Sight开始,Laravel成为唯一支持ServerSideMVP模式的框架。为什么要使用视线?首先,它加快了开发速度。第二,国内Phper都知道大厂禁止SQL联表超过三张表。遇到初学者的时候,会在FOR循环中查询数据库。如果您禁止它,他们也有可能拔取相关ID。找到结果,然后在FOR循环中嵌套FOR循环,查看相关的关联数据。Sight提供了非常好的Pluck功能。查到ID后,请求相关数据发送给Sight,Sight会为你拼接数据。它的做法是通过关联ID作为KEY来组织数据。从而大大提高了程序效率。第三,Sight的使用非常简单。例如,下面的例子几乎类似于Model的使用。命名空间App\PresenteruseBardoqi\Sight\Presenter;使用Bardoqi\Sight\Traits\PresenterTrait;使用Bardoqi\Sight\Enums\MappingTypeEnum使用Bardoqi\Sight\Enums\PaginateTypeEnum使用App\Repositories\ArticleRepository;使用App\Repositories\UserRepository;classArticlePresenterextentsPresenter{使用PresenterTrait;公共功能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(字段Mapping::of()->key('created_at')->src('created_at')->type(MappingTypeEnum::METHOD_NAME))->addFieldMappingByObject(FieldMapping::of()->key('created_by')->src('user_name')->type(MappingTypeEnum::JOIN_FIELD));返回$this->toPaginateArray(PaginateTypeEnum::PAGINATE_API);}}在上面的例子中,代码是将created_at从int转换为time,将created_by从userid转换为username,我们可以看到:created_at使用了MappingTypeEnum::METHOD_NAME,这个方法在哪里,在PresenterTrait中。因此,您也可以定义自己的Trait。created_by直接读取关联数组中的user_name,因为使用了MappingTypeEnum::JOIN_FIELD。上面的代码看起来有点长,但是onRelationByObject()可以改成onRelation()来传参,代码更短。同样的addFieldMappingByObject(),使用addFieldMappingList()传入一个数组,代码也更短。视力远不止这个功能。不仅支持MySQL检测的数据,还支持ElasticSearch检测的数据。虽然是纯数组操作,但是也有innerJoin和outerJoin,还有hasOne,hasMany……当然还有更多的功能,大家要仔细看文档。Sight试图解决您在找到数据后将数据转换为可显示数据的不适感。它做得很好,真的让你编码更快乐;编码更快!Github地址:https://github.com/BardoQi/SightSight-加速Laravel开发的杀手组件现已开源!快点FORK,快点STAR!
