Reputation: 6555
I have a web application which has been developed with symfony 1.4. I have a pretty large code base (and growing). Circa 80,000 lines of code (actions, forms, models, templates etc.)
I'm using the default doctrine version which ships with symfony 1.4.
I've just started developing a mobile version using Sencha touch. I don't wish to use symfony for the REST web services because:
I want to keep my mobile app as bloated-free, efficient and quick as possible. And unfortunately for this task, Symfony 1.4 would not be the best choice for using as the backend architecture for my mobile app. If I had chosen symfony2 (it was in it's beta phase, alas) it would be a different story as symfony2 supports true REST functionality. What I do need, however, is the ability to use my current doctrine models (I have circa 90 models) in a chosen REST framework.
Basically, in a nutshell what I need is as simple as this:
Call a rest route->Query my doctrine models->return the JSON without using symfony.
So my question, what would be your advice? I don't want this to be a question of which is the best PHP rest framework, however, what I would like to know is what would be a good REST framework which i can develop efficiently and quickly REST service, make use of my doctrine models and is easily extendable.
Upvotes: 0
Views: 1185
Reputation: 4506
Here at my employer, I've created a rather big application with a ExtJS frontend, and Symfony 1.4 backend. And two be honest, I don't feel limited by Symfony 1.4 in any way?
First of: I created my own base controller class (which extends sfActions
). This controller can handle (render) different types of data. It has generic handling for Doctrine_Query
, Doctrine_Collection
, Doctrine_Model
and array
types.
Also the plugins make me help organize the code, and in some cases plugins are shared between differend projects, so that's also a big plus.
And the extra functionality like forms: it's only prepared for you in the autoloader, you don't have to use it. And I don't think it causes any real performance issues (at least not for me). But I like to use the extra sfValidator
framework, to make sure data are correct.
The only real "problem" is indeed the HTTP REST-ful commands, especially PUT
and DELETE
. I just worked around this problem by generating a controller for each 'manageable' model, and implement specific get
, list
, create
, update
and delete
actions. So when I would like to manage an Object
, I call the objects
controller, which has executeCreate
, executeUpdate
and executeDelete
actions.
The reason I read, was that Symfony didn't and couldn't implement this feature because PHP has really bad support this. I don't know if this is true, but if this is your only 'real' issue, you could try to fix this in the Symfony core.
So my advice: If the raw performance is your problem: try profiling your code, install a opcode (APC) cache, and profile your code (yes, that's double). If the HTTP PUT command is your problem: I would either work around this (that's the way I solved it), or try to fix it in the core.
Upvotes: 2