php - Laravel 可重用函数
问题描述
我正在使用存储库设计模式,我有一个函数,generateBarcode()
这个函数只是做一些逻辑并在数据库中插入数据。
我在多个函数和多个存储库中调用此函数以生成新的条形码。
问题是:
使此功能可重用的最佳方法是什么?
- 帮手
但我认为这不是一个好主意,因为它正在处理数据库。
- 活动
触发事件并存储结果。
$barcode = event(new NewBarcodeRequired())
我现在正在做的事情和数据作为数组返回
另外我认为这不是一个好主意,因为我已经读过事件不应该返回数据。
- 存储库
为这个函数创建一个新的存储库,但我认为这是一个非常糟糕的主意,因为我不会为我拥有的每个可重用函数创建一个类。
解决方案
对于这种情况,特征可能是一个不错的选择。这将使您可以灵活地在任何类中使用,而无需类扩展。
Traits 是一种在 PHP 等单继承语言中重用代码的机制。Trait 旨在通过使开发人员能够在生活在不同类层次结构中的几个独立类中自由地重用方法集来减少单继承的一些限制。Traits 和类组合的语义以降低复杂性的方式定义,并避免与多继承和 Mixins 相关的典型问题。
Trait 类似于类,但仅旨在以细粒度和一致的方式对功能进行分组。无法单独实例化 Trait。它是对传统继承的补充,可以实现行为的横向组合;即类成员的应用不需要继承。
推荐阅读
- csv - 是否有可能将不同的 csv 文件匹配到一个配置单元表中?
- python - 用于压缩和下载包含图像的文件夹的 python 代码
- angular - 使用输入和输出将数据从组件传递到另一个组件
- javascript - 无法在 Axios 拦截器中获取 Vuex 存储
- python - Dicom 到 PNG 的转换 - 输出图像完全是黑色的
- python - 如何阻止代码在python中走得更远
- django - 我想将变量从基本模板(具有导航和页脚的 basic.html)传递给子模板(index.html)
- git - 从命令行重命名 Github repo
- javascript - 如何使用本机反应在视图组件内放置分页?
- javascript - 带有显式 JSDoc 注释的奇怪打字稿推断