在REST框架中使用Symfony原则模型


Using Symfony doctrine models in a REST framework

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

我使用symfony 1.4附带的默认doctrine版本。

我刚刚开始使用Sencha touch开发手机版本。我不希望为REST web服务使用symfony,因为:

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

我想让我的移动应用程序尽可能的不臃肿,高效和快速。不幸的是,对于这个任务,Symfony 1.4并不是作为我的移动应用程序的后端架构的最佳选择。如果我选择symfony2(它还在测试阶段,唉),情况就不同了,因为symfony2支持真正的REST功能。然而,我真正需要的是在选定的REST框架中使用我当前的原则模型(我大约有90个模型)的能力。

基本上,简单地说,我需要的是这么简单:

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

所以我的问题是,你的建议是什么?我不希望这是一个问题,这是最好的PHP rest框架,然而,我想知道的是什么将是一个好的rest框架,我可以开发高效和快速的rest服务,利用我的理论模型,很容易扩展。

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

首先:我创建了自己的基本控制器类(扩展了sfActions)。这个控制器可以处理(呈现)不同类型的数据。可对Doctrine_QueryDoctrine_CollectionDoctrine_Modelarray四种类型进行通用处理。

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

唯一真正的"问题"确实是HTTP restful命令,特别是PUTDELETE。我只是通过为每个"可管理"模型生成控制器来解决这个问题,并实现特定的get, list, create, updatedelete动作。因此,当我想管理Object时,我调用objects控制器,它具有executeCreate, executeUpdateexecuteDelete动作。我读的原因是,Symfony没有也不能实现这个特性,因为PHP对它的支持真的很差。我不知道这是不是真的,但如果这是你唯一的"真正的"问题,你可以尝试在Symfony核心中修复这个问题。

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