I, for one, am eagerly awaiting the Zend Framework. When it was first announced, I feared that it was going to be a framework highly geared towards enterprise development with tie-ins to a bunch of other Zend tools like the Zend Platform or either of the Zend Core things (Oracle or DB2/Cloudscape). What I’ve heard since has relieved a bunch of that fear, and given me some hope about its development and the future of PHP. Their main goal, as many have now reported, is that of extreme simplicity. Unfortunately for those developing any software product, making it extremely simple is not an extremely simple thing – it’s normally an extremely difficult thing. Trying to create an application that will be easy to install, easy to deploy, and easy to use is a very difficult thing. Especially when you have to do it quickly, you have a lot of people ready to pounce on you when you make mistakes, and the thing you’re trying to make extremely simple isn’t a trivial problem.
For a while PHP was the exciting new language – new websites were popping up with tutorials, great libraries, and all sorts of other stuff. Recently PHP has been dethroned from the top of the ‘hip’ heap, and been replaced by Ruby on Rails (RoR). There’s a lot of hype around RoR, but a lot of that hype is deserved. David Heinemeier Hannson has done an incredible job of putting together a framework that really lets you get moving quickly and takes care of most of the things a standard web application needs to do – letting you, the developer, focus on the functionality of your application. And it does all of this with elegance – some provided by the underlying Ruby language, the rest provided by the thoughtful design of the framework.
I’ve read about and played around with RoR a bit over the last couple months and have been very impressed. The ActiveRecord stuff is just great – simplifying dramatically the effort needed to put together a database-based website. This is actually where most of the power of RoR falls (from my limited experience). It’s major downsides at this time, as far as I see ’em are:
- Limited documentation and tutorials
- Lack of popular applications to learn from / use
- Lack of third party libraries to cover certain common tasks
- Lack of support for deploying Rails applications on cheap web hosts
- Difficulty of deploying multiple Rails apps in the same virtual host
These are all areas where PHP does a great job. Now I know that the Zend Framework isn’t going to be a RoR clone in PHP – there are already a couple attempts at that (in PHP, Java, Python, and I’m sure others) and I don’t think that is a really worthwhile approach – RoR takes advantage of a lot of dynamic features of Ruby…features that other languages don’t have. The frameworks I’ve seen that try to duplicate RoR seem to miss the simplicity boat by trying to adhere to closely to the ‘clone RoR in language X’ game. I think Zend is trying to take a saner approach by picking up some of the great things about RoR – like ActiveRecord (made popular by RoR, but not conceived by the 37Signals folks) – while trying to play to the benefits that PHP has.
Chris Shiflett’s great overview of the php|architect webcast on the Zend Framework has a nice diagram showing the basic design of the framework and some of the default components. I’m very pleased to see the following:
- ActiveRecord – making database access easy
- Search – providing a standard library for file based search
- InputFilter – safeguarding scripts from malicious user input and XSS attacks
- Web service support
- Atom and RSS support
- Standard authentication and authorization modules (Something I’m still very surprised that RoR doesn’t have)
- Simple library for sending email (looks similar to the wonderful PHPMailer)
- Standard mechanisms for config files for an application
- And a bunch of front-end related stuff for Forms (please be simple please be simple), Ajax (cool), internationalization, and PDF
That’s a pretty hefty list of things to be in the framework – and I only listed ones that I was very interested in. The other items I didn’t see – though maybe they’re somewhere else in the framework – that I think would be really useful to a huge portion of PHP apps are:
- A graphics library for creating thumbnails
- A charting library to create charts
- Libraries or tools for the import / export of data
But all in all, I’m very encouraged by what I see. One can only hope that the introduction of this framework will help to spur the adoption of PHP5.X – it’s a big step up in terms of functionality but still a large percentage of web hosts are stuck on the ‘well it works’ PHP 4.X. I think a ‘killer-app’ or ‘killer framework’ might be just the thing to spur the development of new and exciting PHP applications going and put PHP back on top.