大家是如何在 Laravel 中优雅地使用 cache 和 transaction 的呢?

虽然laravel提供了cache和transaction的API,但是在项目中经常会产生很多的样板代码。针对数据库层的cache,以及可能在数据库层和controller层都会有的事务处理,有没有比较优雅的方式去处理?

目前看到的解决方案有

  1. 使用repository设计模式,采用类继承的方式,比较流行的library有 andersao/l5-repositoryrinvex/repository 其中后者能够提供细粒度的cache管理,可以cache query对象。缺点是要写很多的Service类,很多样板代码
  2. 基于annotation的方式,比如使用laravelcollective的annotations组件, 优势是可以自定义基于model和controller的annotation实现cache和transaction的基于annotation的AOP,缺点就是不够灵活,依赖laravel框架,文档比较简单,估计用的人也很少
  3. 基于AOP的方式,比较像Java的解决方案 Go!AOP纯php实现,不需要php扩展,但是会写很多的advice,pointcut之类的,对新手来说门槛比较高,这个库在github上的star数也没有过千。

其实作者最想要的就是想python decorator那样的,在函数上标注一个函数就可以自动地在这个函数执行前调用另一个函数,但是目前没有找到类似的解决方案。在这里集思广益一下:sunglasses:

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!