目前 PHP 的 AJAX library 或 framework 大致可分為二種,一種是 Server Side (如: xajax),另一種Server+Client side (如:AJASON、AjaxAC…)。至於 Client side 的 library (如: Prototype、SACK…) 則不在本篇討論範圍內。
從下圖可以看出 Server+Client side 模式在 Client 端 (View/HTML) 還是必須自行撰寫 Javascript 來跟 Server side 溝通,也就是 Server side 跟 Client side 二邊都要寫程式:
而 Server side 模式則由 library 或 framework 產生 Javascript 來控制 Clent side (View/HTML) 的輸出結果,不需額外在 HTML 撰寫任何 Javascript。
(圖片摘錄自 Tigermouse)
Tigermouse 便是一個 PHP Server-side 的 AJAX Framework,而且 Tigermouse 也是少數以 AJAX 為基礎來組成 MVC 架構的 Framework,同時也是做的最像 .Net 的 Framework 。
Tigermouse View 採用 Smarty:
<table id="{$id}">
<tr>
<td>login:</td>
<td>{$login}</td>
</tr>
<tr>
<td>password:</td>
<td>{$passwd}</td>
</tr>
<tr>
<td colspan="2">{$ok}</td>
</tr>
</table>
(除了 HTML 標準元件之外,也提供了一些小玩藝)
從 Model 產生 View:
<?php
class MainCtrl extends Ctrl {
public function show() {
$f = new Form('loginForm');
$f->template = 'app/LoginForm.tpl';
$l = new Input('login');
$p = new Input('passwd');
$ok = new Button('ok');
$ok->text = 'Login';
$f->add($l);
$f->add($p);
$f->add($ok);
$ok->addListener('onClick', 'LoginCtrl/auth', $f->valueReader());
return $f;
}
}
?>
從上面節錄的 Quick start guide 中可以看到一行特別的東西:
$ok->addListener('onClick', 'LoginCtrl/auth', $f->valueReader());
由此可見 Model 除了能產生 View 中的元件,還能在物件上附加 Event Listener。因此只要透過 TigerMouse 的 Listeners 就可以輕鬆的完成 AJAX Event-driven programming。
以下是官方提供的二個簡單的 Listeners 範例語法:
$view->addListener('onClick', 'FormCtrl/confirm');
$view->addListener('onKeyUp', 'AutocompletionCtrl/complete' , $view->valueReader());
Tigermouse 在 Model 端也提供了多種資料庫存取方式可以採用,如 Rails 的 ActiveRecord、Java 的 DataAccessObject …等等 (但只是有個雛型而已)。當然如果能像 .Net 般將資料庫的 Data Source 結合 View 的元件產生出 HTML 的畫面就更棒了。
目前 Tigermouse 採用 LGPL 授權,支援的瀏覽器以 Firefox 跟 Opera 為主,雖然官方有說 Internet Explorer 6 或許可以,但是實際用 IE 6.0 測試的結果,內建的範例程式在登入是沒問題的,但是輸入資料就會有問題了。而使用 Firefox 2.0 測試雖然功能正常無誤,但是登入後也有出現1個語法錯誤。這實在讓人有點失望,也希望 Tigermouse 未來對瀏覽器的支援能夠更完整。
Tigermouse Demo:
http://www.neo.com.tw/ap/tigermouse
(必須用 FireFox 瀏覽,但主機上的 SQLite 有點慢,有時需要按重新整理)
Tigermouse 官方網址:
http://tigermouse.sourceforge.net/
Tigermouse 文件:
http://tigermouse.epsi.pl/
SourceForge 下載處:
http://sourceforge.net/project/showfiles.php?group_id=173530
Subversion 下載處:
https://svn.sourceforge.net/svnroot/tigermouse
3 comments On Tigermouse PHP/AJAX Framework 簡介
請問一下 Neo 前輩…
能否說說您覺得 xajax 與 Tigermouse 的優缺點各在哪?
謝謝您
timeternity:
Tigermouse 我還沒仔細玩過,所以目前無從比較起喲。Sorry..
目前 Tigermouse 採用 LGPL 授權,支援的瀏覽器以 Firefox 跟 Opera 為主,雖然官方有說 Internet Explorer 6 或許可以,但是實際用 IE 6.0 測試的結果,內建的範例程式在登入是沒問題的,但是輸入資料就會有問題了。而使用 Firefox 2.0 測試雖然功能正常無誤,但是登入後也有出現1個語法錯誤。這實在讓人有點失望,也希望 Tigermouse 未來對瀏覽器的支援能夠更完整。