【问题标题】:Using Symfony doctrine models in a REST framework在 REST 框架中使用 Symfony 学说模型
【发布时间】:2012-01-10 05:59:02
【问题描述】:

我有一个使用 symfony 1.4 开发的 Web 应用程序。我有一个相当大的代码库(并且还在增长)。大约 80,000 行代码(操作、表单、模型、模板等)

我正在使用 symfony 1.4 附带的默认教义版本。

我刚刚开始使用 Sencha touch 开发移动版本。我不想将 symfony 用于 REST Web 服务,因为:

  1. Symfony 1.4 中的 REST 服务不是很好。例如,如果我想要一个 PUT 请求,我必须传递一个“sf_method”参数,指定请求方法是 PUT。这不是真正的 REST,也不适合 Sencha touch。
  2. 我不需要你用来开发标准网络应用程序的所有不必要的 symfony 功能(例如,在 ProjectConfiguration 文件中自动加载的插件、表单框架等)。我只需要定义我的 REST 路由并返回指定的 JSON(因为 Sencha touch 需要返回的所有内容都是 JSON)

我想让我的移动应用程序尽可能地不臃肿、高效且快速。不幸的是,对于这项任务,Symfony 1.4 不是用作我的移动应用程序后端架构的最佳选择。如果我选择了 symfony2(它处于 beta 阶段,唉),那将是一个不同的故事,因为 symfony2 支持真正的 REST 功能。然而,我需要的是能够在选定的 REST 框架中使用我当前的学说模型(我有大约 90 个模型)。

基本上,简而言之,我需要的就是这么简单:

Call a rest route->Query my doctrine models->return the JSON without using symfony.

所以我的问题是,你有什么建议?我不希望这是一个最好的 PHP REST 框架的问题,但是,我想知道什么是一个好的 REST 框架,我可以高效快速地开发 REST 服务,利用我的学说模型并且易于扩展。

【问题讨论】:

    标签: php architecture symfony1 doctrine symfony-1.4


    【解决方案1】:

    在我的雇主这里,我用 ExtJS 前端和 Symfony 1.4 后端创建了一个相当大的应用程序。还有两个老实说,我不觉得 Symfony 1.4 有任何限制?

    首先:我创建了自己的基本控制器类(扩展了sfActions)。这个控制器可以处理(渲染)不同类型的数据。它具有对Doctrine_QueryDoctrine_CollectionDoctrine_Modelarray 类型的通用处理。

    插件还让我帮助组织代码,在某些情况下,插件在不同的项目之间共享,所以这也是一个很大的优势。 还有像表格这样的额外功能:它只在自动加载器中为您准备好,您不必使用它。而且我不认为它会导致任何真正的性能问题(至少对我来说不是)。但我喜欢使用额外的sfValidator 框架,以确保数据正确。

    唯一真正的“问题”确实是 HTTP REST-ful 命令,尤其是 PUTDELETE。我刚刚通过为每个“可管理”模型生成一个控制器来解决这个问题,并实现特定的getlistcreateupdatedelete 操作。因此,当我想管理Object 时,我调用objects 控制器,它具有executeCreateexecuteUpdateexecuteDelete 操作。 The reason I read,是 Symfony 没有也无法实现这个特性,因为 PHP 对这个特性的支持真的很差。我不知道这是否属实,但如果这是您唯一的“真正”问题,您可以尝试在 Symfony 核心中解决此问题。

    所以我的建议: 如果原始性能是您的问题:尝试分析您的代码,安装操作码 (APC) 缓存,然后分析您的代码(是的,这是双重的)。 如果 HTTP PUT 命令是您的问题:我要么解决这个问题(这就是我解决它的方式),要么尝试在核心中修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多