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:
Teraz pisząc wtyczkę wywołujemy właśnie dispatcher:
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):
includeLibs.tx_extbase_dispatcher = EXT:extbase/class.tx_extbase_dispatcher.php tt_content.list.20.blogexample_blog { pluginKey = blog extensionName = BlogExample controllers { 10.controllerName = Blog 10.actions = index,show,new,create,delete,edit,setup,test 20.controllerName = Post 20.actions = index,show 30.controllerName = Comment 30.actions = create } }
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:
Diagram Typo3 v 4.3 (extbase)
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.




Ostatnie komentarze
Daniel
I get a fatal error with this extension: Fatal error: Call to undefined method t3lib_div::makeInsta... / 07 maj. 20:53
Zaawansowana subskrypcja, nasze nowe rozszerzenie
Michael
The correct Amazon S3 API TER link is http://typo3.org/extensions/repository/view/amazon-s3-api T... / 24 kwi. 11:44
s3example - TYPO3 i Amazon S3
Adi
Pod nową wersją t3 z gałęzi 4.5.14 (gdzie w korze znalazły się jakieś krytyczne luki) wtyczka też ni... / 02 kwi. 19:52
Zaawansowana subskrypcja, nasze nowe rozszerzenie
Rafał Brzeski
Nasze niedopatrzenie, w nowej wersji dodamy opcję wyboru tej opcji. / 21 mar. 20:22
Zaawansowana subskrypcja, nasze nowe rozszerzenie
bocianos
Wszystko super tylko jak zrobic aby nowe adresy domyslnie miały zaznaczone otrzymywani maili w forma... / 20 mar. 13:08
Zaawansowana subskrypcja, nasze nowe rozszerzenie