About four months ago, I was introduced to Mojavi, an MVC (Model-View-Controller) framework for PHP. This, after three years of programming in PHP, has been the cleanest solution I’ve found to systematic separation of business and display logic. It allows you to define your web application in terms of discrete modules with actions that can be performed. Any given action will result and any of a number of views depending on input from and state of the user.

Though, at first, the framework is less than intuitive, it is quite powerful and flexible. It provides built in support for different databases, templating systems (Smarty and Smart Templates), input, post and pre filters, action chains, custom error handling, and path style get variables for SEO. The biggest drawback I found is that there exist few good “How-To’s” about it.

If you do web development, you should check it out. I’ve been using it at work and personally and find it incredibly useful. If you have questions, feel free to ask.