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.
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.
Zend_Controller_Router_Route
Zend_Application_Bootstrap_Bootstrap
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.
Cheers,
Alex