I’ve heard some inexperienced PHP programmers say that Zend Framework is confusing to them. Until today, I have agreed: Zend Framework has a lot of classes and some of them are quite complex (such as Zend_Form). But does that actually make it more difficult for inexperienced programmers than other frameworks?
Other frameworks have a lot of things to learn, just like ZF. While there are alternatives such as Cake or Symfony, which are said to be easier to work with, you would still have to learn a lot to be able to use them efficiently. Some say the documentation for other frameworks is better, and while it is true that the ZF manual is a bit lacking in some more complex topics, I think the issue is mostly in the reader: Zend Framework’s manual is very technical in some points, which may be confusing, and the parts that the manual doesn’t cover could easily be learnt by examining the framework’s code.
Zend Framework’s redeeming quality is its architechture – you can pick a framework feature you want and use that, and only that. This way you can introduce Zend Framework to junior developers step by step, class by class, without overwhelming them with everything they have to learn at once.
We’ve been developing some PHP applications at The Group, and while I’m the most experienced programmer there, I have the least free time to work on that project. However, we have several less experienced PHP programmers, who I’ve been helping to learn ZF. They initially thought it was going to take forever, but we’ve used some classes, such as Zend_Auth and Zend_Session, and they learned them quite easily. They can do the coding the way they’re used to and actually get things done, and gradually adapt classes from ZF to help them. The eventual goal is to help them improve enough, and finally migrate their applications to Zend Framework’s MVC architechture, or at least maintain ZF apps, as The Group is a volunteer organization and programming may be just a hobby for some.
While this would require one programmer familiar with the framework, I think it eventually has more benefits. After the other programmers learn it, they hopefully should understand the concepts much better, and should be able to utilize the framework and study it on their own. With some other framework, it could be that while they could initially use them better on their own, they may not completely understand what’s going on behind the scenes. That could, for example, limit their abilities to debug a problem in their code.