symfony vs cakephp

diego picture diego · Aug 7, 2009 · Viewed 32.8k times · Source

What is conceptually the difference between symfony and cakephp?

Answer

stereoscott picture stereoscott · Aug 7, 2009

Just to balance out this thread, this is why I like symfony:

  • uses PHP5
  • it runs some really big sites like Yahoo! Answers, delicious, and Daily Motion.
  • good documentation. the jobeet tutorial on the website is awesome. walks you straight through all of the features, and after you are done you feel like you can build anything.
  • is highly modular; many of the symfony components work on their own.
  • allows you to choose either Propel or Doctrine as your ORM. Doctrine is really great and easy to use.
  • you can define your models with YAML or in PHP, its up to you. Some people don't like configuration files, and you can really limit their use if you want to steer clear of YAML.
  • the updated symfony cli (as of 1.2) is awesome. I agree with abales, before this version it was a little wonky, but now it is very well documented and follows a predictable format.
  • there are a lot, and i mean a lot, of similarities with ruby on rails, except that of course PHP isn't quite as pretty or flexible as Ruby(!). But, if you talk to a cake developer, they will probably say the opposite :)
  • the symfony admin generator, which is a step up from CRUD (which also exists in symfony), is a huge time saver. Using your data model it will generate customizable admin interfaces complete with list views (index), create, and edit pages. It's not like basic crud where it generates the source and you go in and modify it... You actually can define how each field looks, which fields you want to include, what additional actions you can perform on each object, and so on.

Conceptually, I'd say the difference is this:

  • CakePHP has a smaller learning curve. If you have never used a MVC framework, Cake will be easier to pick up and run with in a short amount of time.
  • Symfony feels bit "bigger," not to say that it is slow, but that there is a lot of code back there that will let you do a lot of really advanced things when you need to.

The best advice I can give is to quickly try to set up a your own simple data model in both, and experiment with some basic interfaces, and just see which fits your own coding style the best. I think both frameworks have very active and passionate user communities and you won't regret your decision either way.