3

在我到目前为止所做的学校 Web 项目中,我使用 3 层方法构建了我的应用程序。数据层、应用程序和表示层。我已经在 python 和 java 中使用了这个架构,我也想在 php 中使用它。我对层之间的通信非常严格,因为这些是分配的要求,我可以说我觉得它很好,因为当我尝试从 mySQL 切换到 Mongo db 时,这很容易。我只需要更改我的数据访问对象函数内的代码。

正如我之前所说,我现在想用 php 编写一个更大的应用程序,我下载并安装了 Symfony2 框架,它是一个 MVC 框架。我的意图是使用 MySQL 初始测试应用程序,然后使用 Redis 切换和测试它。

所以我的问题是:我可以使用框架的功能和所有“好东西”来编写 3 层架构应用程序吗?我该如何分离这些层?

4

2 回答 2

3

Symfony2 本身并不是一个 MVC 框架,它只是一堆松散耦合的组件,它们可以很好地协同工作。首席开发人员有一篇关于此的博客文章。

您可以选择捆绑包的细粒度,例如,您可以创建包含纯域对象、业务逻辑和存储库接口、DAO 的捆绑包,无论您想要什么。您可以选择提供您选择的 ORM 的映射配置。现在,您可以为数据访问策略创建捆绑包,例如与教义一起使用的捆绑包,与 redis 一起使用的捆绑包,实现您的存储库接口。

所以你可以对细粒度的包结构着迷,但对于简单的应用程序,你可以将所有这些放在下面/src,或者只是创建一个包,其中实现了所有数据访问策略,并在应用程序中选择一个包配置。

研究其他包的方法也有助于熟悉最佳实践,FOSCommentBundleFOSUserBundle可能是一个很好的起点。

于 2012-02-28T17:19:18.050 回答
2

当然。诀窍是将您的数据层(也称为业务对象)封装在服务中。您的应用程序(又名控制器)根据用户输入与这些服务交互,并将结果传递到表示层。

仔细构建您的服务,您将能够在不影响控制器或演示的情况下更换数据库层。

于 2012-02-28T16:20:55.800 回答