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

13.10.2009 15:52:25
I think your approach sounds quite fine. You can use ZF with Doctrine too though, so if Symfony is just because of Doctrine, you could also go for the easier to maintain one-framework solutions.
markus 15.10.2009 11:30:29
added some things as shown below. For example my final decision and some advise.
Julius F 15.10.2009 17:28:02
hey arms, did you already made a decision, about your team and the frameworks you will use, or do you take (Sympho and so on?).
Julius F 20.10.2009 11:31:25
Hi daemonfire300, thanks for reminding me of this question :) I've posted my answer below
Steven Mercatante 20.10.2009 12:14:59
@Arms, I commented on your post below.
Julius F 21.10.2009 19:11:03
6 ОТВЕТОВ

*

EDIT: Now that I nearly understand HOW to improve the ZendFramework using your own code (as asked here Adding 3rd Party lib to Zend and here Using 3rd Party lib within Zend), I switched back to ZendFramework. I currently design my application and each day which I work and test anything with ZendFramework it gets more and more familiar and it easily quickens my developement. My advise: Use ZendFramework.

*

I have currently the same problem:

My story: I was using CakePHP until I wanted to expand my project's size. CakePHP was not as flexible as I wanted it to be. So i tried to use ZendFramework.

The very first time I read the 'QuickStart' guide, i was a little bit afraid of having that much files for a simple guestbook application.

After a time of 'playing' with the ZendFramework I decided to use ZF as a 3rd party lib in my own custom framework.

The problem is, IF you use Zend's MVC components you might be forced to use 30% of the whole framework, because the MVC components are one of the biggest part of the ZF. I mean if I use that much of a framework WHY shouldn't you use the rest, too?

After that, I decided to write my COMPLETE custom framework without using ZendFramework as 3rd party lib.

Now I am sitting in front of mountains of papers, full of sketches about code design.

I will keep you up to date about my further decisions.

3
23.05.2017 12:11:21
+1 for the edit. Good to see that you're making it work for you.
Steven Mercatante 15.10.2009 17:52:33
Since those links are back to SO, I took them back out of bit.ly and edited to show the real links. Much easier to trust what you get when you click them, then.
Verbeia 4.10.2011 11:22:04
2 years of zend, I am still pleased except the Namespace support. Currently working with Symfony 1.4 at work, I am not very pleased with Symfony 1.4.
Julius F 10.10.2011 13:10:48
I think it's a really bad idea to write your own framework. Letting aside that you will probably not have so much use cases and experience as ZF-core developers and comunity combined, you'll be left with legacy code, that NO ONE except you will be able to read. You'll also need to teach your framework to every new developer you'll work with. That's in contrast with any well-known framework, that has a community that uses it and know the framework's guts.
Tomáš Fejfar 28.05.2012 19:22:16

Zend Framework: Huge, Flexible, Modular. I'd use only if am building a enterprise big ultra system.

But, I'm using Yii Framework and I like it. Because: Very Fast, Simple, Widgets (easy to reuse component, this is very nice).

Yii it's easer to use, because is not a enterprise framework, and have all Basic features you really need in most cases.

3
15.10.2009 11:14:07
ZF doesn't have to be huge, since it is modular! If you want to build a large enterprise system you shouldn't use PHP at all. ZF is absolutely fine for small projects too! every size of project is ok.
markus 15.10.2009 11:26:05
I made some small project and it's too much work to be done. I now it's possible... Use Yii for small project and you'll see the speed of development. Both framework are great.
Ismael 15.10.2009 11:28:35
If you know how to use ZF it's not a lot of work at all! That's what Zend_Tool_Project and Zend_Application are for.
markus 15.10.2009 11:33:25
РЕШЕНИЕ

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.

6
4.10.2011 16:35:37
*right, loading custom classes in ZF is as easy as wearing your trousers, you just have to put them into autoloader ;) *ZF also allows you to use other "pieces" as much as you want to ;) *The point you are talking about the "tuts" is right, but Zend is an enterprise framework *For some reasons the ZF docs are a bit "crappy", right ;) *ZF used by IBM, betwin, etc. etc. Nice to hear, that you finally found a framework you like to work with. ;)
Julius F 21.10.2009 19:10:29
To be fair the function naming with underscores, in Symfony, is used only for "helpers"; which are these functions you can call from your view templates.
user58777 6.12.2009 10:43:37

I honestly think it really depends on your style. There's no end all be all answer to this question.

ZF relies heavily on classic and proven design principles. It's also very extensible, but requires more "configuration" than "convention". I personally do not trust 3rd party code by nature, so I'm a fan of more verbosity, for the sake of being more familiar with the technology I'm working with. But that's just me.

I've also used CakePHP successfully and two other frameworks proprietary to a company I worked for with great success. They're all trying to do similar things, just pick what feels best for you.

1
20.10.2009 12:25:49

I've personally used CakePHP successfully for both large and small projects, however it is often difficult to make it budge the way you want. My reasons for using Cake continue to reside in the fact that the community support is top notch, the security updates are often, and they do not force meta-packages (such as unit testing) upon you (although this is bundled, you can just bin it if you're not interested in using the built in package).

Altogether, it's made a nice system for me over the past few months, however I have heard time and time again that Symphony is fantastic, so you may perhaps be on the money with your first thoughts. With NetBeans support for Symphony in the pipeline, I may too find the need to switch before long.

1
20.10.2009 12:34:41

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.

4
20.10.2009 22:06:43