views:

418

answers:

6

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

+3  A: 

*

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.

daemonfire300
+1 for the edit. Good to see that you're making it work for you.
Arms
+3  A: 

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.

Ismael
Jesus no! I was negativated!
Ismael
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.
tharkun
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
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.
tharkun
+5  A: 
Arms
*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. ;)
daemonfire300
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.
faB
+1  A: 

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.

rr
+1  A: 

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.

Nathan Kleyn
+2  A: 

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.

Tomáš Fejfar