ready or not, here I come (DR1)

17 Sep 2006

Tigermouse jest ajaksowym frameworkiem MVC dla języka PHP. Kolejnym. Nie jest on (i nie ma być) najlepszy do tworzenie po-prostu-stronek, dość dobrze jednak nadaje się (w zamierzeniu) do budowy aplikacji WWW. Ma kilka cech wspierających takie właśnie jego zastosowanie.

Lekki i szybki kontroler czołowy, który przyjmuje żądania klienta, odnajduje właściwy kontroler aplikacji i odbiera od niego odpowiedź. Potrafi również przepuszczać komunikację klienta i kontrolera przez zestaw filtrów.

Filtry wejścia i wyjścia wspierają zachowania wspólne dla całej aplikacji. Przykładem takich zachowań może być ochrona przed session hijacking, profilowanie, logowanie żądań czy ochrona dostępu do części aplikacji.

Kontrolery aplikacji są również lekkie. W odróżnieniu od ajaksowych wymysłów z PEARa kontrolery aplikacji nie muszą być nigdzie rejestrowane. Ich lokalizacja w aplikacji odbywa się za pomocą prostych stringów, którymi można się posługiwać tak po stronie klienta jak i serwera.

Dwa kanały komunikacji w kierunku od klienta do serwera umożliwiają przekazywanie parametrów do kontrolera aplikacji poprzez zwykłą listę parametrów funkcji PHP lub przez obiekt kontekstu formularza.

Kanał zwrotny pozwala na przenoszenie widoku do klienta. Gdy widok jest już wyświetlany zostanie on zaktualizowany/podmieniony. Możliwe jest również przesłanie w jednej odpowiedzi wielu widoków.

Oprócz zwracania widoków możliwe jest róznież wywołanie funkcji JavaScriptu po stronie klienta. Tigermouse pośrenio wiąże wywoływanie funkcji na obiekcie odpowiedzi z wywołaniem funkcji w środowisku klienta. Znów - bez uprzedniej rejestracji wywołań.

Warstwa abstrakcji źródła danych hermetyzuje różnorodność pochodzenia danych. Dodatkowo, w fazie oksperymentu DAO i ActiveRecord z możliwością odwzorowywania w jednym obiekcie wielu tabel, a nawet źródeł danych.

Framework pozwala uniknąć podawania ajaksowego callbacku zanim kontroler aplikacji odeśle odpowiedź. Decyzja o tym co ma się wydarzyć w wyniku akcji dokonuje się po stronie serwera, a nie klienta.

I wreszcie, jest spora szansa, że pisząc aplikację w oparciu o Tigermouse nie będziesz musiał napisać ani bajtu JavaScriptu. Większość potrzebnych procedur uruchamianych po stronie klienta jest hermetyzowana przez obiekty lub metody po stronie serwera.

Tigermouse to w chwili obecnej ścisła beta. Testy niektórych przypadków użycia upewniają mnie, że architektura frameworka jest niezła (a w porównaniu z tym, z czym mam do czynienia w pracy wręcz arcyniezła).
Wszystkich zainteresowanych tworzeniem aplikacji WWW serdecznie zapraszam do zapoznania się z frameworkiem. W repo znajduje się trywialny przykład ustawiania listenerów, obługi formularzy i wywoływania handlerów JavaScriptowych. Nie ukrywam, że wszelkie opinie oraz wasze doświadczenia będą dla mnie bardzo cenne. Chętnych zapraszam do współpracy - każda jej forma się przyda, od dyskusji przez kodowanie aż do dokumentowania kodu czy korekty językowej.

Instalacją Tigermouse jest całkiem prosta. Wymaga on biblioteki Smarty w include_path oraz modułu Services_JSON. Przyda się również obsługa PDO, ale nie jest ona niezbędna (ponadto można napisać własny adapter do np. PEAR::DB, ADOdb czy Creole).
Po zaciągnięciu z repozytorium SF (svn co https://svn.sourceforge.net/svnroot/tigermouse lub tar.gz) należy ustawić prawo do zapisu do podkatalogów var/smarty/compile/ oraz var/log/ w katalogu projektu dla użytkownika serwera WWW.
Zachęcam do testów i zapraszam do devcentrali, na SourceForge.

Update 1158617449: W svn-ie leży sensowniejsza niż poprzednio aplikacja demonstracyjna.

Digg del.icio.us StumbleUpon Wykop Reddit Folksr

permalink | trackback | rss

 
 
Jajcuś

Załatwiłeś sobie papier od szefa, że firma zrzeka się praw do tego co wypłodziłeś? Robisz jako programista, do tego służbowo kodujesz podobne rzeczy... dobrze byłoby się zabezpieczyć.

str()

Erm, robię to po pracy, nie włączam żadnego kodu z tego co jest w firmie, różnice są na każdym kroku, słowem jest to zupełnie odmienny kawałek software i inna koncepcja działania. Nawet Laura DiDio zauważy ;-)

Your turn:

nick:
and?:
www (if any):
Wpisz kod:code
ready or not, here I come (DR1) tigermouse php ajax framework mvc