views:

66

answers:

1

I have taken over a medium sized project that was written originally using RoR. The powers that be have decided that they want the web app, 'ported' to Symfony.

After looking at some of the RoR code, I suspect that RoR strongly "influenced" Symfony, as a lot of the idioms are shared - so I think that a 'port' of an app from one to the other should be quite possible (though not for the faint of heart).

Without getting into a discussion about the wisdom (or otherwise) of taking this on, could someone provide a bullet point list of the TODOs, in terms of the steps required to port a RoR application into a Symfony one.?

+3  A: 

I cannot give you any bullet points, let alone a Porting Guide from RoR to Symfony, but I can tell you how I would approach it. Remember, just because two application use the same Design Pattern, their implementation of it may differ, so you will likely have to adjust a lot of code, despite any shared idioms.

Assuming the RoR project is covered with UnitTests, I'd start by porting all tests to PHPUnit. Start with the Functional Tests. Since the problem domain does not change with the porting, these should be the same as in RoR. Leave them empty if you cannot implement them immediately. The main point is describing what the application is supposed to do in the end.

Once you have all the functional tests written down, look at the components involved in making these tests pass. Check if Symfony provides an equivalent implementation to what you used in RoR. If so, port the applicable UnitTests. Then implement the components. Repeat until all Functional Tests pass.

If Symfony does not provide an equivalent, come up with an alternative. When doing so, keep in mind that not everything from RoR is necessarily the best option in Symfony or PHP, so use common sense to find alternatives, even if that means deviating from how RoR does it.

Also keep in mind that Symfony can be used side by side with Zend Framework. And while ZF is not modeled after RoR at all, you might find it's components useful in the cases where Symfony does not provide equivalents to RoR.

On a sidenote, while Symfony is inspired by RoR, the framework that actually tries to be RoR in the PHP world is CakePHP. Since you say you have to use Symfony that doesnt matter, but I thought I mention it.

Gordon
+1: This is exactly the sort of logical steps I was in need of
morpheous