gpt4 book ai didi

php - 使用服务层 : is it bad practice? 的特征

转载 作者:可可西里 更新时间:2023-11-01 00:39:38 25 4
gpt4 key购买 nike

我注意到 Laravel 程序员使用 traits 在 Controller 中实现某种依赖注入(inject)是很常见的,而且 Laravel 本身也使用很多 traits 来实现在我看来是服务的东西。

我来自 symfony,其中 traits 并没有被框架本身广泛使用,我发现它有点奇怪,因为我发现使用 trait 是出于这样的原因,而不是那么清晰的设计。服务不应该在它们自己的类中定义吗?将特征用于服务是否可以接受?

最佳答案

我注意到之前的答案尚未被接受,所以我想给自己 2 美分。

我也来自 Symfony 2 环境,目前正在使用 Laravel 并为 Symfony 3 环境做准备,我也在阅读这个主题,因为我曾经读到过特质是邪恶的。以下链接有一个公认的答案,在我看来这是一个不太主观的答案,它做出了一些合理的假设并且看起来构造得很好:https://codereview.stackexchange.com/questions/74077/trait-accessing-variables-of-classes-using-it

但是,我认为对您来说最大的区别可能是默认的 Laravel 使用 ActiveRecord,这与 Symfony 使用的服务/存储层形成对比。我个人更喜欢后者,它不那么重,更容易成为 SOLID,逻辑和数据通常已经解耦,使得层更容易交换。无论如何,这是一个不太切合主题且非常个人化的笔记。

现在在 Laravel 工作几个月后(相比之下,我在 sf2(和 sf1)工作了多年)我几乎不是 Laravel 工作原理的专家。就我个人而言,我仍然不喜欢 traits,因为它们对我来说太神奇了,如果你至少不连接它们的话。我经常认为通过其他设计模式可以更好地处理它。

TL;DR:(基本上是链接的要点)

  • 特征的一个很好的用例是水平缩放,支持独立的操作,而无需在每次添加接口(interface)时都必须实现它的开销。 (通常这是相当简单的逻辑)
  • 坏的特征是使用超出其自身范围的信息(例如“主”对象的属性,或简单的全局状态)或强制/破坏契约的特征。

关于php - 使用服务层 : is it bad practice? 的特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48280730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com