Yii 2中的服务层和实体

时间:2015-09-01 13:20:34

标签: php spring yii2

我已经学习了Yii2框架几周了。其核心概念之一是" Fat模型,瘦控制器"。阅读advanced application template的源代码我发现由于这个概念,几乎所有逻辑都包含在模型中。

嗯,如果我没有使用Spring MVC的经验,那么根本就没有任何问题,其中服务层似乎是将应用程序的逻辑与其实际数据分离的一种自然方式。

所以问题是:在使用Yii2构建的应用程序中实现类似企业的结构是否是一个好习惯?更具体地说:是否值得将Yii的模型分解为实体,DTO和服务?

提前谢谢!

PS:这个问题看起来似乎过于抽象或主观,但对Yii2几乎没有经验我想知道Yii2中是否有任何架构特征可能使上述实现不是最佳的关于代码维护,性能等等?

2 个答案:

答案 0 :(得分:1)

您实际上可以创建非ActiveRecords的模型,因此它们实际上成为您的服务层,只需要根据您的需要从yii\base\Modelyii\base\Object扩展,并实现您需要的所有逻辑。您还可以在名为services的另一个文件夹上创建这些模型,因此它们的名称空间将变为app\services\ModelName

答案 1 :(得分:0)

使用其他功能而不是内置功能对于每个框架都不是一个好习惯。

IMO,模型部分是yii2的杀手级功能,所以如果你不需要脚手架(代码生成),你可以使用任何其他没有模型部分(zf2symfony2的php框架,微框架)。

因此,您可以使用自己的模型架构而不会出现任何性能滞后,但是您需要编写更多代码才能完成任务,并且您的模型很难被其他使用yii2的人支持,因此我建议使用另一个没有模型层的框架。