Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What framework(s) would you suggest for a strong, extensible dev platform? [closed]

First, let me apologize for Yet Another Framework Question. But I think this is different enough from the usual "What framework should I choose?" to warrant it.

Here's my situation: For the past year I've been using a custom framework. It's been used on everything from small CMS's to larger sites and even a mid sized social network. It's worked great but I now see its limitations. So, I've decided to switch to a 3rd party framework. The simpler frameworks (CI, Kohana, Cake) seem too inflexible from what I've heard - so this led me towards ZF. But, I've also heard that ZF may be too flexible and thus hard to work with. What further complicates this is that I'm looking for a one-size-fits-all solution; I need a setup that works on small projects to very large projects. I am the main developer, but I need my partner to eventually be able to learn the system and help with the less complicated programming tasks.

I've researched Doctrine and I love it. So I'm leaning towards Symfony (with Doctrine) as the main framework with ZF to fill in the gaps. Plus, I need the ability to add my own pieces to this platform parallel to any 3rd party libraries. I hope this will provide me with a solid, extensible platform, as we really can't afford to be switching out frameworks every few projects.

I'm looking for advice from others who have been in the same situation as I am in now. Any advice would be greatly appreciated.

Edit: I've posted my solution below in hopes of helping other people in the same situation

like image 592
Steven Mercatante Avatar asked Oct 13 '09 15:10

Steven Mercatante


2 Answers

After some research I've decided to go with Symfony. Here are my reasons:

  • Less verbose than ZF
  • Seems very customizable due to usage of YAML files (yet I never feel overwhelmed by them)
  • Autoloading of custom classes doesn't require any extra work like in ZF (albeit it's not hard to set up in ZF)
  • The developer toolbar is great, and they're adding some nice features to it in ver 1.3
  • The ability to use pieces from other frameworks (ZF, eZComponents) makes me feel confident that I won't have trouble finding what I need
  • Comes bundled with Doctrine and is very easy to set up (in fact Doctrine will become the default ORM in ver 1.3)
  • It seems like there's a much larger community for Symfony. Google "symfony tutorials" versus "zend framework tutorials" and you'll see a massive difference in the number of results
  • Plenty of documentation: tutorials (the Jobeet tutorial so far is very good), API references, and a more human readable description of the framework and its underlying principles
  • Yahoo! has used it for a few of their own projects - it's nice to see a Big Name back a framework IMHO

Edit: For the sake of hopefully helping others in the same situation, here are some things I don't like about Symfony:

  • Does not follow the PEAR naming scheme (ZF does)
  • Internal classes begin with "sf". This is contrary to the practice of capitalizing the first letter of the class name
  • Variables and functions are written_like_this, yet class methods are camelCased - this seems sloppy to me

These are all cosmetic issues though; things that bother me because I like to do things my way. I realize that whenever you use third party software you must be willing to make some sacrifices.

ZF is certainly a nice framework, but I feel using Symfony as the primary framework and extending it with pieces of ZF is the best choice for me and my team.

Edit

It's been 2 years since originally posting this, and since it's still getting hits I thought I'd give a quick update. I probably built about 25 - 30 projects using symfony 1.x in the last 2 years, and I'm very happy with how it performed. As a full stack MVC framework, partnered with Doctrine, it handled almost everything I threw at it. And whatever it couldn't handle, it was easy to add my own custom code. In fact, that's what I love most about symfony - how easy it is to extend. I ended up building a bunch of plugins and Doctrine behaviors that greatly reduced development time. And the admin generator tools have been a god-send. I'm still using symfony 1.4 for a few projects here and there, but have decided to mainly focus now on using Symfony2. It's a completely different beast than symfony 1, but I really appreciate its architecture. More importantly, it seems even easier to extend than symfony 1.x. I do miss some of 1.x's features, but that's the sacrafice you have to make when switching frameworks.

like image 148
Steven Mercatante Avatar answered Sep 21 '22 23:09

Steven Mercatante


I like using ZF because of strong conventions. You can be sure, that everything will be as you expect it. Class names, function names, variable names, directory structure, ... all of it. It really speeds up the development if you stick to it. If you adapt it it's more like looking into your own code, when checking the ZF internals ;)

Let's be honest. ZF is not fast. Not as fast as Nette, CodeIgniter, etc. But the difference is that there is a class for everything. And if there is not, there is a class you can extend or interface you can implement.

All the other frameworks try to gain on the "wow" effect (blog in 30secs, twitter in 2 hours, etc). But when develioping a real life application, you realize, that it's the use at will, flexible and extensive architecture, that you need.

like image 24
Tomáš Fejfar Avatar answered Sep 19 '22 23:09

Tomáš Fejfar