Spojrzenie w przyszłość - Typo3 4.3 i extbase
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.




Najnowsze komentarze
Powered by Disqus