首页 > 解决方案 > Laravel 可重用函数

问题描述

我正在使用存储库设计模式,我有一个函数,generateBarcode()这个函数只是做一些逻辑并在数据库中插入数据。

我在多个函数和多个存储库中调用此函数以生成新的条形码。

问题是:

使此功能可重用的最佳方法是什么?

  1. 帮手

但我认为这不是一个好主意,因为它正在处理数据库。

  1. 活动

触发事件并存储结果。 $barcode = event(new NewBarcodeRequired())

我现在正在做的事情和数据作为数组返回

另外我认为这不是一个好主意,因为我已经读过事件不应该返回数据。

  1. 存储库

为这个函数创建一个新的存储库,但我认为这是一个非常糟糕的主意,因为我不会为我拥有的每个可重用函数创建一个类。

标签: phplaravelrepository-pattern

解决方案


对于这种情况,特征可能是一个不错的选择。这将使您可以灵活地在任何类中使用,而无需类扩展。

Traits 是一种在 PHP 等单继承语言中重用代码的机制。Trait 旨在通过使开发人员能够在生活在不同类层次结构中的几个独立类中自由地重用方法集来减少单继承的一些限制。Traits 和类组合的语义以降低复杂性的方式定义,并避免与多继承和 Mixins 相关的典型问题。

Trait 类似于类,但仅旨在以细粒度和一致的方式对功能进行分组。无法单独实例化 Trait。它是对传统继承的补充,可以实现行为的横向组合;即类成员的应用不需要继承。

http://php.net/manual/en/language.oop5.traits.php


推荐阅读