Yii ActiveRecord 与存储库模式

tzo*_*zik 5 php activerecord repository-pattern yii

这些方法既有优点也有缺点。

我正在使用 Yii 开发一个中型应用程序。

Yii 采用了 AR 模式并默认支持它。使用存储库模式的优点非常明显,但问题是:我真的应该投入时间来实现与 Yii 结合的存储库模式吗?

我也想知道您对这两种模式的看法。我还想知道为什么AR如此受欢迎、使用如此频繁?在我看来,存储库模式更灵活,更可测试,代码更简洁,并且可以更好地集成到企业应用程序中。

我应该继续在 Yii 中使用 AR 模式吗?

我也在考虑从 Yii 切换到 Laravel。此时此刻,我不会因为这样做而失去太多工作。

Ale*_*kin 4

对我来说,ActiveRecord 在小型项目中相当不错,但对于中型或大型应用程序来说,它很难维护。

Yii ActiveRecord 的优点

  1. 使用 Yii AR 可以加快编码速度。所有AR模型和控制器都可以通过gii一键生成。
  2. AR非常受欢迎。几乎所有开发人员都熟悉这种模式。新的团队成员可以更快地投入到项目中。

Yii ActiveRecord 的缺点

对于 Yii,太多逻辑集中在 AR 模型类中:

  • 验证
  • 寻找方法
  • 商业逻辑

这使得代码:

  1. 可读性较差。AR 类通常由几十个不相关的方法组成。逻辑可以用行为特征来分解。但事实上它仍然很难维护。
  2. 很难测试。

当应用程序变得足够大时,需要在控制器和 AR 模型之间添加附加层。存储库是一个不错的选择。对于我来说,我开始在 Laravel 中使用存储库,但现在我也在 Yii 1/2 中使用它。

实际上,在 Yii 中实现存储库并不是问题。Yii 的 AR 与 Laravel 的 Eloquent 非常相似。强迫所有团队成员不直接使用 AR 而是使用存储库要困难得多。

如果您有 Laravel 经验,我建议您使用它。

  • 我知道这是一篇旧帖子,但是您能花点时间举例说明您到底是如何实现 Yii2 的存储库模式的吗?对于特定模型的要点中的代码示例将不胜感激。 (3认同)