Перемещение проекта из RoR в Symfony - каковы необходимые шаги? - PullRequest
2 голосов
/ 07 августа 2010

Я взял на себя проект среднего размера, который был изначально написан с использованием RoR. Власти решили, что им нужно веб-приложение, «портированное» на Symfony.

Посмотрев на некоторый код RoR, я подозреваю, что RoR сильно «повлиял» на Symfony, поскольку многие идиомы являются общими, поэтому я считаю, что «порт» приложения от одного к другому должен быть довольно возможно (хотя и не для слабонервных).

Не вдаваясь в дискуссию о целесообразности (или иным образом) принятия этого решения, может ли кто-то предоставить список маркеров TODO с точки зрения шагов, необходимых для переноса приложения RoR в приложение Symfony?

1 Ответ

3 голосов
/ 07 августа 2010

Я не могу дать вам никаких маркеров, не говоря уже о Руководстве по портированию из RoR в Symfony, но я могу рассказать вам, как бы я подошел к нему. Помните, что только из-за того, что два приложения используют один и тот же шаблон проектирования, их реализация может отличаться, поэтому вам, вероятно, придется корректировать большой объем кода, несмотря на любые общие идиомы.

Предполагая, что проект RoR покрыт UnitTests, я бы начал с переноса всех тестов в PHPUnit. Начните с функциональных тестов. Поскольку проблемный домен не изменяется при портировании, они должны быть такими же, как в RoR. Оставьте их пустыми, если вы не можете сразу их реализовать. Главное - это описание того, что приложение должно делать в конце концов.

Как только вы записали все функциональные тесты, посмотрите на компоненты, участвующие в выполнении этих тестов. Проверьте, предоставляет ли Symfony эквивалентную реализацию тому, что вы использовали в RoR. Если это так, перенесите соответствующие UnitTests. Затем внедрите компоненты. Повторяйте, пока все функциональные тесты не пройдут.

Если Symfony не предоставляет эквивалент, придумайте альтернативу. При этом имейте в виду, что не все из RoR обязательно является лучшим вариантом в Symfony или PHP, поэтому используйте здравый смысл для поиска альтернатив, даже если это означает отклонение от того, как это делает RoR.

Также имейте в виду, что Symfony может использоваться бок о бок с Zend Framework. И хотя ZF вообще не моделируется после RoR, вы можете найти его компоненты полезными в тех случаях, когда Symfony не предоставляет эквиваленты RoR.

Что касается единой точки зрения, то, хотя Symfony вдохновлен RoR, фреймворк, который фактически пытается стать RoR в мире PHP, - это CakePHP. Поскольку вы говорите, что должны использовать Symfony, это не имеет значения, но я подумал, что упомянул об этом.

...