I’ve recently begun building version 2 of my year-old custom MVC framework. It’s worked great for me on a number of projects, but I definitely see room for improvement. It’s missing some major functionality like ACL, form validation, and caching. As much as I’d love to build those parts myself, I know that realistically it’s not a smart decision. So, I’ve started looking at Zend Framework 1.9. I really like how its component library is loosely coupled. However, from looking at different tutorials, it seems very verbose. I’ve seen some sample applications that I could duplicate using less code with my own framework. As such, I’d like to “redefine” much of it to make it more RAD friendly. So before I invest a lot of time digging into the framework, I was hoping someone could shine some light on this subject for me. I’m a coder at heart, and have no problem spending hours upon hours tweaking and customizing something if it has a solid foundation (which I hope ZF has).
I should note that I’m very happy to see that Doctrine can be integrated with ZF.
If ZF isn’t easily extendable, what other frameworks are (that also have ACL, form validation, caching)? I’ve been looking at Symfony, but the whole Configuration over Convention thing bothers me a lot.
Thanks in advance for any input.
Edit
To answer tharkun’s question, what I mean by ‘easily extendable’ is that I can roll my own classes (that may or may not extend ZF classes) and package them in the framework so that I can easily build a foundation of code for my own projects.
Among the popular PHP frameworks ZF is surely the one which is most readily extended, especially because of the loose coupling.
Thanks for the clarifications.
What you describe is exactly what ZF is good at but I’d say it is also exactly what OOP is good at so I would regard an OO framework that doesn’t support this a case for the rubbish bin.
Anyways. With ZF it’s normally done in a way that you keep your own library in a parallel structure to the ZF folder structure. You can use the ZF autoloader and register your library folder with the autoloader by adding it to the namespace. Example:
In Mylibrary you should then follow ZF naming conventions. Say you want to extend the Zend_Db_Table_Abstract Class. This class is located logically under Zend/Db/Table/Abstract.php. Your library should now replicate that structure: Mylibrary/Db/Table/Abstract.php. And you would name your class in that file:
Did you have anything else in mind when asking this question?