Najnowsze wpisy

Zaawansowana subskrypcja, nasze nowe rozszerzenie

W repozytorium CMS TYPO3 jest już kilka pluginów za pomocą których można...
09 styczeń 2012

Convenient In/Out animation using expressions

We recently had an opportunity to make a set of instructional animations...
07 listopad 2011

Wdrożenie Sphinx Search

W ostatnim czasie potrzebowaliśmy wydajnego i rozbudowanego mechanizmu...
26 lipiec 2011

Tagi

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

maciek, 19 lipiec 2009 Komentarze: 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.

Brak komentarzy.
Dodaj swój komentarz:

* Tylko oznaczone pola są wymagane