As we improve our own internal web framework that powers iContact, we’ve identified some key things you should look for in any web framework.

Must haves:
1. Request
2. Response
3. RequestHandler

These must haves provide an abstraction for the key elements of any web framework, whether it be MVC or otherwise. Having objects to encapsulate the request, and send back a response allow for many tasks be simple. Most importantly, they allow you to construct a test harness that doesn’t have to jump through hoops to process headers or handle sessions.

Extremely Helpful
4. Autoloading – Webs of require/require_once are no fun
5. Error/Exception handling – Displaying pretty output when errors occur
6. Logging – Log levels, different targets
7. Profiling
8 Security helpers – XSS/CSRF

Helpful, but probably belongs somewhere else
9. Database wrapper
10. Sessions and authentication

While these latter elements aren’t in the same class as 1-3, you’ll end up constructing most of these components to make tasks easier. Wouldn’t you rather focus on building our application than building another framework.

How do your favorite web frameworks shape up? Let us know in the comments!