Использование моделей доктрин Symfony в среде REST - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть веб-приложение, которое было разработано с помощью Symfony 1.4.У меня довольно большая база кода (и растет).Около 80 000 строк кода (действия, формы, модели, шаблоны и т. Д.)

Я использую версию доктрины по умолчанию, которая поставляется с Symfony 1.4.

Я только начал разработку мобильного телефонаверсия с использованием Sencha Touch.Я не хочу использовать symfony для веб-сервисов REST, потому что:

  1. REST-сервисы в Symfony 1.4 не очень хороши.Например, если я хочу запрос PUT, я должен передать параметр 'sf_method', указывающий, что метод запроса - PUT.Это не настоящий REST, и он не идеален для сенсорного Sencha.
  2. Мне не нужны все ненужные функции Symfony (например, плагины, которые автоматически загружаются в файл ProjectConfiguration, инфраструктура форм и т. Д.)что вы будете использовать для разработки стандартного веб-приложения.Все, что мне нужно, это определить мои REST-маршруты и вернуть указанный JSON (так как все, что нужно вернуть для Sencha touch, будет JSON)

Я хочу, чтобы мое мобильное приложение было свободным,эффективный и быстрый, насколько это возможно.И, к сожалению, для этой задачи Symfony 1.4 не будет лучшим выбором для использования в качестве серверной архитектуры для моего мобильного приложения.Если бы я выбрал symfony2 (увы, он был на стадии бета-тестирования), это была бы другая история, так как symfony2 поддерживает настоящую функциональность REST.Однако мне нужна возможность использовать мои текущие модели доктрин (у меня есть около 90 моделей) в выбранной среде REST.

В общем, в двух словах, все, что мне нужно, так просто:

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

Итак, мой вопрос, что бы вы посоветовали?Я не хочу, чтобы это был вопрос о том, какая из лучших PHP-фреймворков для отдыха, однако, я хотел бы знать, что является хорошей REST-фреймворком, который я могу эффективно и быстро разработать, используя REST-сервис, используя мою доктрину.модели и легко расширяется.

1 Ответ

2 голосов
/ 01 декабря 2011

Здесь, у моего работодателя, я создал довольно большое приложение с внешним интерфейсом ExtJS и внутренним сервером Symfony 1.4.И два, честно говоря, я не чувствую себя ограниченным Symfony 1.4 в любом случае?

Во-первых: я создал свой собственный базовый класс контроллеров (который расширяет sfActions).Этот контроллер может обрабатывать (отображать) различные типы данных.Он имеет общую обработку для типов Doctrine_Query, Doctrine_Collection, Doctrine_Model и array.

Кроме того, плагины помогают мне организовать код, а в некоторых случаях плагины используются разными проектами, поэтомуэто тоже большой плюс.И дополнительная функциональность, такая как формы: она подготовлена ​​только для вас в автозагрузчике, вам не нужно ее использовать.И я не думаю, что это вызывает какие-либо реальные проблемы с производительностью (по крайней мере, не для меня).Но я хотел бы использовать дополнительную инфраструктуру sfValidator, чтобы убедиться, что данные верны.

Единственная реальная "проблема" - это действительно команды HTTP REST-ful, особенно PUT и DELETE.Я только обошел эту проблему, создав контроллер для каждой «управляемой» модели и реализовав конкретные действия get, list, create, update и delete.Поэтому, когда я хочу управлять Object, я вызываю контроллер objects, который выполняет действия executeCreate, executeUpdate и executeDelete. Причина, по которой я прочитал , заключалась в том, что Symfony не реализовал и не смог реализовать эту функцию, потому что PHP действительно плохо это поддерживает.Я не знаю, правда ли это, но если это ваша единственная «реальная» проблема, вы можете попытаться исправить это в ядре Symfony.

Так что мой совет: если ваша проблема связана с необработанной производительностью:попробуйте профилировать код, установить кэш кода операции (APC) и профилировать код (да, это в два раза).Если ваша команда HTTP PUT - ваша проблема: я бы либо обошел это (так я решил), либо попытался бы исправить это в ядре.

...