Home > TYPO3 > Spojrzenie w przyszłość – Typo3 4.3 i extbase

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

logo-typo3Od 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:

//
  1. userFunc = tx_yourext_pi1->main

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

//
  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):

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

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

http://flow3.typo3.org/fileadmin/manual/MVCFramework_RequestResponseWorkflow.png

Diagram Typo3 v 4.3 (extbase)

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

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

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

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

  • Share/Save/Bookmark

maciek TYPO3 extbase, flow3, mvc

  1. Brak komentarzy
  1. Brak jeszcze trackbacków