After looking at several frameworks I've narrowed down to two. One is revising my own for the 4th time. The other is using Zend Framework.
My employer is keen on the fact it's something he can drop into the employment requirements particularly since Zend does certification. To be fair to incoming hires, if we adopt it I'll go to the trouble of getting certified.
From what I understand of it, it's fairly loosely coupled. Any stories - glowing reviews or horror stories, welcome.
Note - the project won't start in earnest until early next year if Zend 2 is due out by then that is relevant.
Yours does though, right? I hate to use a word like benchmark, apache-bench, or maybe valgrind, it seems to scare all the Kool-aid kids away except Padriac Brady he's so smart he figured out how to make the library faster
"Padraic Brady's Blog: PHP Framework Benchmarks: Entertaining But Ultimately Useless"
Our library is so slow, so benchmarks must be useless.
if benchmarks are slow they must be useless.
I've been using ZF for about 2 and a half years now and would never go back. If you are a control freak, and can handle the learning curve / time investment, then go for it.
The common complain is that it's over-engineered, but once you start modifying core component behavior, it's a total god-send. It's easy enough to extend nearly any class, or implement tons of interfaces to code things your own way. If you want something that simply works now, and don't want to change behaviours, then ZF is not for you.
The other common complaint is "it took me this long to do ____". Once you do it the first time, you can re-use it. Odds are, if it took you that long, you are doing it the hard way. Ask on a site like SP or StackOverflow to find best practices and you'll whip right through it.
People who tell you that it's the easy way out, and that Kohana, Cake, or (insert framework here) frameworks are for men, and Zend is for lazy people are stupidly ignorant. It's the complete opposite.
The code quality is the highest among frameworks I've seen, and the community is fantastic. Tap into the #ZF twitter feed, and ask any questions you have. The core contributors are all very active, as is the rest of the community around it. All (or damn near it) the code is unit tested, with tests included.
Like I said, I wouldn't go back to any other framework. It's for developers - not web designers.
All frameworks have their hinderance's, either way the effort put into working with ZF will pay off. A strong and competent use of abstraction with a commitment to coding standards should provide you with an application layer that does not necessarily need to be literally entirely ZF dependent (as along as you then support all the functionality that ZF provides by other means if ever neccessary).
There is however always the question of the task/application at hand. Other applications may provide more immediate functionality out of the box. But if it is an application you're building from scratch then ZF is a good foundation to build on.
I honestly cannot say anything good about Zend.
I think you should be looking at CodeIgniter, Kohana or Symphony. Cake and Zend are only for people who want native Access Control... which is a lazy man's way out. Especially since you will be doing things their way and not 'your' way once you identify what way that is.
What the problem that I have with Zend is that it jumped on the back of php and introduced some very badly coded OOP features. its only later on in php 5.3 that they are fixing these problems. they then marketed and promoted these features when they did not understand them. you really need to do some google searches on the origins of OOP and how it should be used and not the static disgraces Zend is using.
OOP objects should be passed around through the constructors and not just appear out of nowhere. just like you can create a db diagram that shows primary keys and foreign keys and how everything interacts. one to many etc.. you should be able to show the interactions between the different dependances of OOP classes.
zend framework is highly over rated and the people who use it don't have a clue about OOP.
you will find zend framework to be the bottle neck of the any system you build with it.
blueyon, serious question: have any of your friends or family been murdered by a Zend Framework developer? Trying to work out the kill bill level of hatred you have against it.
Nobody can sell you on the Zend Framework, you have to sell yourself. If your employer is considering using it, tell him to write a simple application with it, and then ( I might get ridiculed for saying this ) bench it.
Then go over the application and look at the points that make sense and the ones that don't.
Does your employer want the PR machine behind the Zend Framework to sell the applications created with it?
How does your employer usually test the skill-set of potential employees?
Ehr.. Huh? Zend Framework is not for lazy people: it takes a lot of set-up to do even the most of trivial things. CodeIgniter, Kohana and Symfony take less time to set-up, but they do assume a lot as to how your application will look like. This is especially true for Symfony, but not so much for CodeIgniter or Kohana. I've abandoned CodeIgniter because it wasn't flexible enough to live up to my expectations.
Zend Framework is the most flexible of the ones named, but in my experience it also takes the most time to set-up and learn. From a professional point of view, I agree with PCSpectra in full: Zend Framework is the way to go, unless of course your own framework better suits your needs.
From what I understand of it, it's fairly loosely coupled. Any stories - glowing reviews or horror stories, welcome
Of all the popular frameworks, Zend is probably best known for this, sure. That being said, define "loosely coupled", because the components could be further decoupled.
Complexity too. The designers/engineers of much of that code seem to have implemented some code, simply for the sake of writing code. My personal preference is to keep classes extremely simple, to the point where, by themselves they are utterly useless. Zend still requires a lot of wiring code, but that is what makes it so much more flexible than CodeIgnitor, etc.
I have a few issues with Zend, mostly it's complexity. There is almost 1000 physical lines in Zend/Controller/Front.php alone. :eek:
While I agree that physical lines of code (not even SLOC) are a good metric for software quality, that amount of code surely means more dependencies and greater coupling.
Part of this complexity stems from the fact that Zend tries to provide intelligent defaults. Personally, I would prefer a stupid implementation and better documentation in a framework, as a client developer. For instance if you don't provide a response object, the front controller assumes a HTTP response. Which is fine, but is that really nessecary when targeting software developers? Seems superfluous to me and just means more code trying to address an issue that should not really be an issue in the first place.
Another issue I have with Zend is the redundancy in naming standards. Reading the classes or the code sometimes leaves me feeling like I stutter.
I know this is something of a moot point, but it's the little things that I pay attention too. If otherwise insignificant details are pedantically taken care of, chances are, more important issues are addressed as well.
Setting up some of the Zend components is also a huge PITA. Zend router being the biggest issue I have had so far. Using an XML file to contain the mappings proved to be a nightmare for me, as well as disabling the default view handling. I eventually figured it out but good lord, that was extremely frustrating.
The structure of the file system is more organized that most frameworks, and naming is often pattern based, giving you an instant idea as to what everything does. The organization however could have been improved a little, IMO.
Not the greatest sales pitch, I know.
Professionally using Zend makes most sense. It's wildly popular, supported by a company, actively being developed and has accreditation courses. If I were forced into using a framework other than my own, Zend would be it, purely from a professional perspective. I know I would dislike it way less than CodeIgnitor, CakePHP, etc.
That works the other way too... if it doesn't work for you, point out the bad points. Using words like "buzzwords", "sugar", "sponsors", or "bottlenecks", etc. don't help anyone objectively evaluate the framework.
some people just don't want to drink the Zend Kool-Aid.
I happen to be one of them.
If it works for someone great. Point out the good points. But just don't add 1 scoop of buzzwords, 1 cup of Sugar and 1 packet of sponsors and expect everyone to drink it.
Some people don't like to consume artificial flavorings.