There are hundreds of web frameworks for PHP and part of them support AJAX as well. Choosing the right one is not easy, as it is impossible to compare all of them. There is nice list of AJAX enabled frameworks on Ajax Patterns wiki page. You can also take a look at useful matrix.
Web frameworks cover wide range of technologies and functionalities to provide structured web application development. The main areas of frameworks coverage are:
- technical infrastructure
- presentation layer
- model manipulation
- functional libraries
Not all frameworks are trying to provide all of these functionalities. Some of them are merely a basic toolkits, some are powerful, yet loose libraries.
This is the most technical area. You will find it communication chanel issues such as URL formatting, parameters handling, requests routing, MVC, XMLHttpRequest support, requests timeouts and queuing, access control.
There are many different approaches to presentation layer. Basic frameworks do not provide template infrastructure (SAJAX). Some of them use custom template languages (Rails), some existing libraries and some use XSLT. Other use objects to keep presentation elements structured.
Tigermouse gives you freedom to choose between Smarty templates or object oriented approach. While templates are used extensively, UI widgets have been implemented after proven fat-client toolkits such as Qt, GTK#, PyGTK and SWT.
Comprehensive frameworks tend to provide data access and/or abstraction library. It is mostly well integrated with the rest of framework the way model is meant to be used. The most common model representations are ActiveRecord design pattern and DataAccessObject design pattern. Rails provides ActiveRecord implementation, Symfony relies on Propel ORM library. There are also some standalone tools, e.g. POG (generative approach to programming) or IBM's SDO.
Tigermouse provides model manipulation layer, too. It features own ActiveRecord implementation with exceptionally easy to use of one-to-many and many-to-many relations. As an alternative DataSource classes are provided to help you manage large sets of data independently from real data provider engine (be it data base, plain old array, XML resource or remote service). Noteworty feature is that Tigermouse does not limit you to use only one data base abstraction layer or RDBMS engine. Flexible adapters can deal with numerous backends (such as PDO or PEAR::DB) as well as SQL dialects (including Standard SQL 92 and Microsoft dialect).
This is potentialy the greatest area to cover for web frameworks. Most often email handling and mailing lists are handled. Outbut backends such as PDF are common as well as internationalization and localization. The richest libraries sets are provided by ezComponents, Zend Framework, PEAR and others.
Tigermouse provides only access control layer and internationalization support in this area. We believe that others may be better in providing fine grained control for specialized tasks.
what can you expect from Tigermouse?
If you build a client side-like application with user interface similar to SWT, GTK or Qt, Tigermouse will surely do. Building, prototyping and refactoring Tigermouse based applications is very easy. The framework provides solid infrastructure for AJAX and user interface keeping it strictly MVC-compliant.
Tigermouse is not trying to provide a complete set of features not related directly to infrastructure, model or user interface. Use third party libraries and specialized frameworks to provide additional functionality for your model and controller actions.
what you should not expect from Tigermouse?
Despite building traditional portal-like web sites upon Tigermouse is possible you are strongly discouraged from doing it. There are better frameworks for such tasks that have wide range of supporting facilities such as doorway pages, traffic analysers, sitemap building tools and URL manipulation utilities. Also, web crawlers such as Google work way much better with traditional frameworks.
This web site shows that building portals with Tigermouse is possible, but lessons have been learned and there are better frameworks for doing so. Do not use hammer to slice a fish. Take a look at one of big names: Symfony, CakePHP, CodeIgniter or Rails.