Spojrzenie w przyszłość - Typo3 4.3 i extbase

maciek Niedziela, 19 Lipca 2009 20:06 komentarzy: 0

TAGI:extbase, flow3, mvc

Od wersji CMS TYPO3 4.3, zostały wprowadzone 2 nowe wtyczki systemowe: extbase oraz fluid. Dziś postaram się krótko przedstawić tą pierwszą. Każdy programista który, choć trochę interesuje się inżynierią oprogramowania zapewne słyszał kiedyś o MVC, jeżeli nie to polecam poczytać co nieco chociażby na wikipedii (http://pl.wikipedia.org/wiki/MVC). Developerzy Typo3 doszli do wniosku, że obecna architektura rozszerzeń przestała być elastyczna i wystarczająca. Przykładem może być tutaj choćby tt_news. Cały kod napisany w jednym wielkim pliku, zapytania wymieszane z renderowaniem widoków, obsługa akcji podjętych przez użytkownika mało czytelna. Wszelkie modyfikacje czy próba dodania nowej funkcjonalności kończy się długotrwałą pracą i frustracją.

Spojrzenie w przyszłość

Co w takiej sytuacji począć? Zmienić architekturę i zaczerpnąć ze sprawdzonych rozwiązań takich jak właśnie MVC czy AOP (aspect-oriented programming) zwłaszcza, że najnowsza wersja PHP 5.3 przynosi wiele nowości które wspierają te rozwiązania. Chyba każdy w środowisku Typo3 słyszał już o projekcie FLOW3 (http://flow3.typo3.org/), nowym frameworku na którym zostanie oparte Typo3 v 5. Wszystko zapowiada się naprawdę rewelacyjnie jeżeli chodzi o elastyczność oraz wygodę pisania aplikacji (co prawda chłopaki jeszcze maja małe problemy z wydajnością ale dajmy im trochę czasu :)). Flow3 i Typo3 v. 5 to technologie przyszłości, ale już dziś możemy posmakować tego co mają do zaoferowania dzięki wtyczce extbase. Wtyczki napisane w oparciu o nią będą mogły zostać po lekkich modyfikacjach zainstalowane w najnowszej wersji Typo3.

Jak to działa?

Upraszczając sprawę do minimum można powiedzieć, że w extbase mamy główny kontroler zwany dispatcher, który zajmuje się "tłumaczeniem" nowej architektury na starą. Do tej pory uruchomienie wtyczki polegało na wywołaniu w niej głównej klasy poprzez TS:

zaznacz
  1. userFunc = tx_yourext_pi1->main

Teraz pisząc wtyczkę wywołujemy właśnie dispatcher:

zaznacz
  1. userFunc = tx_extbase_dispatcher->dispatch

Oczywiście poprzez przekazanie dodatkowego Typoscript z konfiguracją dispatcher zarejestruje nam nasze kontrolery i zadba o odpowiednie ich wywołanie.

Poniżej przykładowy TS (z wtyczki blogexample):

zaznacz
  1.  
  2. includeLibs.tx_extbase_dispatcher = EXT:extbase/class.tx_extbase_dispatcher.php
  3. tt_content.list.20.blogexample_blog = USER
  4. tt_content.list.20.blogexample_blog {
  5. userFunc = tx_extbase_dispatcher->dispatch
  6. pluginKey = blog
  7. extensionName = BlogExample
  8. controllers {
  9. 10.controllerName = Blog
  10. 10.actions = index,show,new,create,delete,edit,setup,test
  11. 20.controllerName = Post
  12. 20.actions = index,show
  13. 30.controllerName = Comment
  14. 30.actions = create
  15. } }
  16.  

Jak widać rejestrujemy 3 kontrolery i do każdego z nich odpowiednie akcje. By dobrze zrozumieć cały proces dobrze jest przeanalizować poniższe 2 diagramy sekwencji obrazujące pojedyńczy request:

 

Diagram z Flow3:

mvcframework_requestresponseworkflow

 

Diagram Typo3 v 4.3 (extbase)

 http://www.typoplanet.de/mvc/mvc_sequence_v2.png

 

Jak widać dispatcher jest tylko łącznikiem starej architektury z nową. Więcej na: forge.typo3.org/wiki/typo3v4-mvc/MVC_Concept

W kolejnym moim artykule postaram się przedstawić wtyczkę wykorzystująca extbase i opisać krok po kroku.

blog comments powered by Disqus