php - 使用 Symfony PHP 实现三层架构

标签 php model-view-controller symfony 3-tier

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

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

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

最佳答案

Symfony2 本身并不是一个 MVC 框架,它只是一堆松散耦合的组件,可以很好地协同工作。有一个 blog post来自首席开发人员的介绍。

您可以选择 bundle 的粒度,例如,您可以创建一个包含纯域对象、业务逻辑和存储库接口(interface)的 bundle ,无论您想要什么。您可以选择提供您选择的 ORM 的映射配置。现在您可以为数据访问策略创建包,例如使用 doctrine 的包,其他使用 redis 的包,实现您的存储库接口(interface)。

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

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

关于php - 使用 Symfony PHP 实现三层架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9484458/

相关文章:

php - 基于变量的表

javascript - Spring MVC 与 Mustache 发送字符串变量。

symfony - 如何在 Symfony Controller 中获取 Assets img url

c# - 当我尝试 getallUsers() 时,序列不包含匹配元素错误

Symfony:Profiler 看到 twig 被弃用,但找不到它们来自哪里

php - 如何从普通 SQL 中的 NOT EXISTS 转换为 DOCTRINE ORM

NTP 服务器的 php 验证

javascript - 调用 PHP 文件会使每次点击发送的请求量增加一倍

javascript - 提交时的表单验证不起作用

c - 可编辑 GtkTreeView 的困难