8

我已经确定了要在我的应用程序中实现的以下层。据我所知,多层架构是企业应用程序的首选。

  • 表示层
  • 业务层
  • 数据访问层
  • 服务层

我选择了 Symfony2 作为应用程序中使用的框架。Symfony2 内置了 MVC 架构。并且上述层存在如下。

  • 表示层 => 控制器和视图
  • 业务层、服务层 => 模型
  • 数据访问层 => 也是模型,但使用了 Doctrine。

模型由业务层、数据访问层、服务层组成。请参阅下图,该图是从 Martin Fowler 的著作《企业应用程序架构模式》中借来的

服务层图,同心圆

我的问题是,

有没有办法将模型解耦成单独的业务层、数据访问层、服务层?如何在 PHP 中实现多层架构?我应该使用其他一些框架(如果它只支持分层架构)?

更新

下面的链接很有帮助

在 MVC 中应该如何构建模型?

如何使用 PHP 构建 n 层 Web 架构?

在 MVC 和 3 层或 N 层架构中开发网站有什么区别?

MVC 应用程序。多层架构如何适应?

在 MVC 架构中实现服务层

使用 Symfony PHP 实现 3 层架构

4

1 回答 1

14

如果你真的想尝试做一些受 MVC 启发的东西,那么你唯一的选择是 Synfony 和 Zend。其他只是可悲的 Rails 克隆,它们实现了PAC的一些混蛋。而 Sf2.x 似乎是两者中更好的一个……但这就像指出补习班中最聪明的孩子一样。
除非您能够并且愿意制作自己的框架,否则 Sf2.x 将是您最好的选择。

我认为这里的主要问题是误解了 MVC 中的“模型”是什么。模型是一个层,而不是任何特定的类或对象。在 Fowler 书中的图片中,“ MVC 模型”将三个同心圆合在一起。

MVC 中基本上有两个主要层:模型层和表示层。表示层通过服务与模型层交互,让您抽象底层的领域业务逻辑。

不要将其与“域模型”混淆。领域模型是一种描述客户业务中所有知识和专业知识的想法,用于创建应用程序。通常它将被表示为单独的域对象和所述对象的交互。

此外,这张照片有些误导。数据抽象层(通常实现为数据映射器的集合)不是比领域模型更低级别的结构。域对象和存储抽象都由服务使用(直接或通过存储库和工作单元)。它被称为“应用程序逻辑”,是服务的直接责任。

底线:不,您不需要选择一些不同的框架。您只需要了解有关应用程序架构的更多信息。您应该阅读企业应用程序架构的模式.. 那将是一个很好的起点。

My 2 cents

于 2013-09-11T15:02:49.250 回答