Tigermouse AJAX framework for PHP

Tigermouse - AJAX framework for PHP
login password or
english polski español français
news about publicity rss
5 minutes tour live demo screencast demo other frameworks
getting started
faq download and installation quick start guide user documentation on-line help channel
getting involved
mailing lists developer documentation development guidelines upgrade assistant
the goal
Our goal is to develop high quality web applications framework for PHP and AJAX. We follow the best practices of software engineering to provide reliable, ready for changes and easily maintainable solution.
did you know?
Use TableGateway database access class to access table rows the way you access PHP arrays: $people[42] will return the row where primary key equals 42.
PHP Smarty Sourceforge JSON AJAX Tigermouse

Other frameworks

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:

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.

technical infrastructure

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.

Some AJAX frameworks provide server interface stubs in Javascript. Function or method is pre-registered at server side, then exported as Javascript wrapper. When called, wrapper performs asynchronous call. Callbacks are usualy not handled at all, or handled in very limited way. See SAJAX, AjaxAgent, My-BIC as examples.

Tigermouse provides a complete feature set in this area. It provides server side calls from Javascript and Javascript execution from server side. There is no method pre-registering, as all public Controller methods are available. All requests are queued to prevent out-of-order execution. Requests have their TTL and are terminated on timeout. All calbacks are handled by internal Tigermouse callback then forwarded to requested callbacks. Callbacks are being requested at server side, not client side, so the decision on what callback to use is made at server side, after you know the response, not before.

presentation layer

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.

model manipulation

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).

functional libraries

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.