大家是如何在 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:

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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