编程语言
首页 > 编程语言> > php – 使用服务层的特征:这是不好的做法吗?

php – 使用服务层的特征:这是不好的做法吗?

作者:互联网

我注意到laravel程序员通常使用traits在控制器中实现某种依赖注入,而laravel本身也使用很多特性来实现我认为是服务的东西.

我来自symfony,其中特征没有从框架本身广泛使用,我发现它有点奇怪,因为我发现因为这样的原因使用特征,而不是那么清晰的设计.服务不应该在他们自己的班级中定义吗?使用特质服务是否可以接受?

解决方法:

我注意到之前的答案还没有被接受,所以我想给自己2美分.

来自Symfony 2环境,目前正在参与Laravel并准备Symfony 3环境,我也正在阅读这个主题,因为我曾经读过这些特性是邪恶的.以下链接有一个已接受的答案,在我看来是一个不那么主观的答案,它做了一些公平的假设,看起来构造得很好:https://codereview.stackexchange.com/questions/74077/trait-accessing-variables-of-classes-using-it

但是,我认为最大的区别可能是默认的Laravel使用ActiveRecord,而不是Symfony使用的Service / Repository层.我个人更喜欢后者,它不那么沉重,更容易实现SOLID,逻辑和数据通常已经解耦,使层更容易交换.无论如何,这是一个不那么主题和非常个人的说明.

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

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

>特征的一个很好的用例是水平扩展,支持独立的操作,而不必在每次添加接口时都必须实现它. (通常这是相当简单的逻辑)
>坏的是使用其自身范围内的信息的特征(例如’主’对象的属性,或简称为全局状态),或强制执行/中断合同.

标签:software-design,php,laravel,symfony,dependency-injection
来源: https://codeday.me/bug/20190828/1748904.html