TYPO3 5.0
der aktuelle Stand der Zukunft
Jochen Rau <jochen.rau@typoplanet.de>
Mit Beiträgen von Robert Lemke und Sebastia...
Wer ist das?

 Dipl.-Ing. Maschinenbau (Universität Stuttgart)
 Erstinfektion mit TYPO3 im Jahr 2001 (danach 5 Jahre lang
...
TYPO3 heute

 erste Veröffentlichung 1998
 33 Kernentwickler
 bisher 500.000 Zeilen Code committed
 aktuelle Codebase: 300....
TYPO3 heute

 TYPO3 v4 ist nahezu vollständig ausgereift
 letzte Releases: Fokus auf Usability-Verbesserungen für
 Benutze...
Warum TYPO3 v5.0?

 Komplexität – Die Architektur des TYPO3 Core hat sein
 Limit erreich und benötigt viel Einarbeitungsze...
Warum TYPO3 v5.0?

 Auf mittlere Sicht werden an die 5.000 Extensions für
 TYPO3 4.x verfügbar sein - in sehr unterschiedl...
quot;Wir brauchen
                                  ein neues
                                  Framework!quot;




http:/...
Die TYPO3-Familie
Vergleich mit bestehenden Frameworks
Vergleich mit bestehenden Frameworks
TYPO3 v5.0

 Was bleibt?
  Es wird ein Back-End geben
  TypoScript wird in einer neuen objektorientierten Version 2.0
  ve...
Layered Architecture




http://www.sxc.hu/photo/585791
Layered Architecture



                    View
     Presentation   Controller

                    Application Logic (Se...
Domain Driven Design
Domain-Driven Design

 Domäne = Aktivität oder Geschäft des Benutzers
 Fokus auf die Domäne, und die Logik der Domäne
 gen...
Domain-Model des Blog Example

      Aggregate
                                    Aggregate
                             ...
Domain-Model des Blog Example
Domain-Model des Blog Example
Model-View-Controller Pattern
              1                        2
                                                   ...
Transparente Persistenz

 Ein Persistence-Manager verwaltet alle Objekte
 Transparent für den Programmierer
  Alle Domain-...
Security
Security

 Authorization
 Authentication
 Validation, Filtering
 Application Firewall
How to protect?

 Es soll alles geschützt werden können
 Das Grundlegendste, was geschützt werden kann sind
 (PHP-)Funktio...
The security election – voting for access

 Die Entscheidung über den Zugriff liegt bei sog. Access
 Decision Voters
 Zugri...
Argument-Validierung

 Alle Argumente, die an den Action-Controller übergeben
 werden, werden automatisch validiert
 White...
Argument-Validierung

 FLOW3 wird mit einer stattlichen Anzahl von Validatoren
 ausgeliefert:
 AlphaNumeric, EmailAddress,...
Definition der Validierungsregeln

 Alle Validierungsregeln werden an Ort und Stelle durch
 Kommentare festgelegt
 Zusätzli...
Definition der Validierungsregeln



  /**
    * Create action for this controller.
    *
    * @param string $author
    *...
Application Firewall

 Die erste Verteidigungslinie
 Blockiert Bad-Requests so früh wie möglich
 Innerhalb der Firewall ka...
Managed Objects
Managed Objects

 Der Lebenszyklus eines Objekts und das Zusammenspiel
 der aktiven Objekte wird durch den Object-Manager
...
Playing with building blocks

 Je weniger eine Klasse von einer anderen Klasse weiß, desto
 einfacher ist deren Wiederverw...
Class Dependencies

 Eine Klasse kommt selten alleine
 Klassen hänge von anderen Klassen ab, diese hängen von
 anderen Kla...
Dependency Injection

 In FLOW3 fragt eine Klasse nicht nach einer Instanz einer
 anderen Klasse; sie bekommt diese automa...
Konstruktor ohne Dependency-Injection

      /**
       * @var F3MyPackageModelCustomerRepository
       */
      protecte...
Klasse mit Constructor-Injection

      /**
       * @var F3MyPackageModelCustomerRepository
       */
      protected $cu...
Klasse mit Setter-Injection

      /**
       * @var F3MyPackageModelCustomerRepository
       */
      protected $custome...
Klasse mit Property-Injection



     /**
      * @var F3MyPackageModelCustomerRepository
      * @inject
      */
     pr...
Aspektorientierte
 Programmierung
Aspektorientierte Programmierung

 AOP ist ein Programmierparadigma und ergänzt OOP
 OOP modularisiert „concerns“ (Aufgabe...
Cross-cutting concerns


                   Presentation
                                  The concerns
                  ...
Cross-cutting concerns




    Domain Model   Domain Model   Domain Model


                                              ...
Fehlende Funktionalität in PHP

Mit AOP kann man
 alle „cross-cutting concerns“ zentralisieren und sauber
 separieren
 bel...
Exkurs: Das Security-Framework


                                               $customer->setName(...)
         Presentat...
Exkurs: Das Security-Framework


                                               $customer->setName(...)
         Presentat...
Test Driven Development
Test Driven Development ...




               ... means that you write an automated
               test, then you write j...
Test Driven Development


                FAIL
    Test Case
?
Test Driven Development


                FAIL                    OK
    Test Case
?                      Implementation
Test Driven Development


                FAIL                    OK                 OK
                                  ...
Test Driven Development


                FAIL                    OK                 OK
                                  ...
Fluid
The Zen of
Templating



        http://www.sxc.hu/photo/821903
Was ist eine Template-Engine?

 übernimmt die Darstellung von Daten
 lebt in der View-Komponente
 Bekannte Engines
  Smart...
Ziele für Fluid

 einfache, elegante Template-Engine
 vielfältige Unterstützung für den Template-Schreiber (z. B.
 Autocom...
Grundkonzepte von Fluid

 Ausgabelogik ist in View Helpers (Tags) gekapselt

                                          Nam...
Grundkonzepte von Fluid

 Jeder Tag entspricht einer Klasse

 1. Beispiel
 {namespace f=F3FluidViewHelpers}
 <f:link>...</...
Grundkonzepte von Fluid

 Variablen


 $this->view->assign(‘blogTitle’,
    $blog->getTitle());

 <h1>Der Name des Blogs i...
Grundkonzepte von Fluid

 Object Accessors
 $this->view->assign(‘blog’, $blog);


 <h1>Der Name des Blogs ist: {blog.title...
Grundkonzepte

 Arrays
 <f:link actionName=“show“
    arguments=“{blog : blog, name : ‘Hallo’}“>
    Posting anzeigen
 </f...
Beispiel-Template aus dem Blog-Example

BlogExample/Resources/Private/Templates/Blog/index.html
Beispiel-Template aus dem Blog-Example

BlogExample/Resources/Private/Templates/Blog/edit.html
Migration von v4 nach v5
TYPO3 Transition Days
FLOW3 - der aktuelle Stand




           Developing TYPO3 5.0 ...
Der aktuelle Stand


                                                            Reflection
                              ...
Nächste Schritte

 erste FLOW3-Beta in 3 Monaten
 erste Pilotprojekte schon jetzt
 Weiterentwicklung des CMS
 Geplanter Be...
The Berlin Manifesto

We, the participants of the T3TD08 state that ...
  TYPO3 v4 continues to be actively developed
  v4...
Patrick Broens, Karsten Dambekalns, Dmitry
 Dulepov, Andreas Förthner, Oliver Hader,
 Martin Herr, Christian Jul Jensen, T...
Extbase — Das neue Framework für Extensions

 quot;Nachfolgerquot; von tslib_pibase
 Ausgewählte Komponenten und Paradigme...
Controlle
                   r



          Model
Domain




          View




Oth
   er
        Stu
              ff
Kickstarter für Extensions

 Nachfolger für den bisherigen Kickstarter
 Release geplant für Juli 2009
 basiert auf den Pri...
Fluid — Die Template-Engine für FLOW3 und v4.x

 Fluid steht ab der Version 4.3 zur Verfügung
 automatische Portierung des...
Getting Started
Links

 FLOW3 Website
 http://flow3.typo3.org
 TYPO3 Forge http://forge.typo3.org
 Download
 https://svn.typo3.org/FLOW3/Di...
inspiring people to share.
TYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der Zukunft
Nächste SlideShare
Wird geladen in …5
×

TYPO3 5.0 - Der aktuelle Stand der Zukunft

6.905 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
6.905
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
192
Aktionen
Geteilt
0
Downloads
60
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

TYPO3 5.0 - Der aktuelle Stand der Zukunft

  1. 1. TYPO3 5.0 der aktuelle Stand der Zukunft Jochen Rau <jochen.rau@typoplanet.de> Mit Beiträgen von Robert Lemke und Sebastian Kurfürst Hohenheim, 15. Mai 2009
  2. 2. Wer ist das? Dipl.-Ing. Maschinenbau (Universität Stuttgart) Erstinfektion mit TYPO3 im Jahr 2001 (danach 5 Jahre lang immun) lebe und arbeite heute in Tübingen zu 60% selbständiger TYPO3-Entwickler zu 60% Familienvater Projektleiter für Extbase, dem neuen Framework für Extensions ab TYPO3 v4.3 zuvor 5 Jahre wissenschaftlicher Mitarbeiter bei der Fraunhofer-Gesellschaft und dem Deutschen Zentrum für Luft- und Raumfahrt 5 Jahre Oberstufenlehrer für Mathematik, Physik und Informatik
  3. 3. TYPO3 heute erste Veröffentlichung 1998 33 Kernentwickler bisher 500.000 Zeilen Code committed aktuelle Codebase: 300.000 Zeilen aktuelle stabile Version: TYPO3 4.2.6 60.000 bis 80.000 Downloads pro Monat mehr als 30.000 Nutzer auf typo3.org registriert höchste Verbreitung im Mittelstand, jedoch auch Nutzung in großen Firmen und Organisationen: Dassault Systems, 3M, Sixt, Unesco, Unicef, WWF
  4. 4. TYPO3 heute TYPO3 v4 ist nahezu vollständig ausgereift letzte Releases: Fokus auf Usability-Verbesserungen für Benutzer gewachsene Architektur kaum Unit-Tests inkonsistente API keine durchgehend objektorientierte Programmierung große Änderungen sind risikoreich bis unmöglich keine klare Trennung zwischen Applikations-Framework und Content-Management-System
  5. 5. Warum TYPO3 v5.0? Komplexität – Die Architektur des TYPO3 Core hat sein Limit erreich und benötigt viel Einarbeitungszeit Datenmodell – Der derzeitige Ansatz ist nicht flexibel genug und bereitet bei direktem Datenbankzugriff Probleme (auch mit DBAL) PHP5 – Die neuen Möglichkeiten von PHP5.3 erlauben eine viel sauberere Architektur Schnittstellen – Eine neue Architektur ermöglicht eine bessere Zusammenarbeit mit externen Diensten (SOAP, WebDAV, 3rd party tools)
  6. 6. Warum TYPO3 v5.0? Auf mittlere Sicht werden an die 5.000 Extensions für TYPO3 4.x verfügbar sein - in sehr unterschiedlicher Qualität TYPO3 wird verstärkt in sicherheitskritischen Bereichen großer und mittlerer Unternehmen eingesetzt Die Entwicklung für TYPO3 wird mehr und mehr professionalisiert (größere Teams mit mehr Aufgabenteilung) Neue CMS auf dem Markt können neue Technologien ohne Rücksicht auf bestehenden Code nutzen
  7. 7. quot;Wir brauchen ein neues Framework!quot; http://www.sxc.hu/photo/585791
  8. 8. Die TYPO3-Familie
  9. 9. Vergleich mit bestehenden Frameworks
  10. 10. Vergleich mit bestehenden Frameworks
  11. 11. TYPO3 v5.0 Was bleibt? Es wird ein Back-End geben TypoScript wird in einer neuen objektorientierten Version 2.0 veröffentlicht Die Seitenbaum-Metapher bleibt erhalten Was kommt Klare Trennung von Zuständigkeiten durch entkoppelte Schichten Wiederverwendbare Komponenten Die Speicherung des Contents wird transparent für das CMS Vollständige Abstraktion von einer Speicherlösung Security wird zentralisiert
  12. 12. Layered Architecture http://www.sxc.hu/photo/585791
  13. 13. Layered Architecture View Presentation Controller Application Logic (Service Layer) Domain Domain Model (Domain Layer) Data Mapper (part of Content Repository) Data source Data Source Abstraction
  14. 14. Domain Driven Design
  15. 15. Domain-Driven Design Domäne = Aktivität oder Geschäft des Benutzers Fokus auf die Domäne, und die Logik der Domäne genaue Abbildung der Sprache und der Regeln innerhalb der Domänen auf Software universelle Sprache („ubiquitous language“) zwischen den Projektmitgliedern die selben Wörter für Diskussion, Modellierung, Entwicklung und Dokumentation
  16. 16. Domain-Model des Blog Example Aggregate Aggregate Root Blog Post Comment Tag
  17. 17. Domain-Model des Blog Example
  18. 18. Domain-Model des Blog Example
  19. 19. Model-View-Controller Pattern 1 2 BlogExample Request Dispatcher TYPO3 HTML Response Controller 6 3 assign(Blog) 5 render() findByName('MyBlog') Blog Response 4 View Repository Domain Model Blog Post Comment Tag
  20. 20. Transparente Persistenz Ein Persistence-Manager verwaltet alle Objekte Transparent für den Programmierer Alle Domain-Aggregates, die durch ein Repository verwaltet werden, werden automatisch persistiert Änderungen an den Daten eines Objektes werden ebenfalls automatisch persistiert
  21. 21. Security
  22. 22. Security Authorization Authentication Validation, Filtering Application Firewall
  23. 23. How to protect? Es soll alles geschützt werden können Das Grundlegendste, was geschützt werden kann sind (PHP-)Funktionen und Methoden Jemand muss entscheiden, ob eine Methode im aktuellen Kontext aufgerufen werden darf Jeder Methodenaufruf wird per AOP abgefangen ohne das dies im original Code sichtbar ist (“touchless”) Zentralisierte Sicherheit: Rollen und Priviliegien werden in Access Control Lists (ACLs) definiert
  24. 24. The security election – voting for access Die Entscheidung über den Zugriff liegt bei sog. Access Decision Voters Zugriff wird nur gewährt, falls mindestens ein “grant vote” und kein “deny vote” vorliegt Eigene Voter können implementiert werden Ein Voter kann sich der Stimme enthalten, falls er nicht für die aktuelle Methode zuständig ist
  25. 25. Argument-Validierung Alle Argumente, die an den Action-Controller übergeben werden, werden automatisch validiert White-Lists: Nur registrierte Argumente sind verfügbar Der Zugriff auf die $_GET- und $_POST-Variablen wird abgefangen
  26. 26. Argument-Validierung FLOW3 wird mit einer stattlichen Anzahl von Validatoren ausgeliefert: AlphaNumeric, EmailAddress, Float, Integer, NotEmpty, Number, NumberRange, RegularExpression, UUID, Text Eigene Validatoren können einfach erstellt werden Validatoren können verkettet und verschachtelt werden
  27. 27. Definition der Validierungsregeln Alle Validierungsregeln werden an Ort und Stelle durch Kommentare festgelegt Zusätzliche Regeln können aufgenommen werden class Blog { /** * The blog's name. Also acts as the identifyer. * * @var string * @validate Alphanumeric, Length(minimum = 3, maximum = 50) * @identity */ protected $name = ''; /** * A short description of the blog * * @var string * @validate Text, Length(maximum = 150) */ protected $description = '';
  28. 28. Definition der Validierungsregeln /** * Create action for this controller. * * @param string $author * @param string $emailAddress * @param F3BlogDomainModelBlog $blog * @return string The rendered view * @validate $emailAddress EmailAddress */ public function createAction($author, $emailAddress, F3BlogDomainModelBlog $blog) { [...] }
  29. 29. Application Firewall Die erste Verteidigungslinie Blockiert Bad-Requests so früh wie möglich Innerhalb der Firewall kann ein Request anhand von Mustern klassifiziert werden (z.B. URL, IP address/range, ...) Falls ein Muster passt wird der zugehörige Interceptor aufgerufen (deny access, grant access, authentication required, ...) Falls kein Muster passt wird der Request standardmäßig abgewiesen
  30. 30. Managed Objects
  31. 31. Managed Objects Der Lebenszyklus eines Objekts und das Zusammenspiel der aktiven Objekte wird durch den Object-Manager gesteuert Das Verhalten der Objekte ist in FLOW3 frei konfigurierbar
  32. 32. Playing with building blocks Je weniger eine Klasse von einer anderen Klasse weiß, desto einfacher ist deren Wiederverwendung in verschiedenen Kontexten Gestalten Sie ihren eigenen LEGO-Baukasten, indem Sie voneinander klar getrennte und entkoppelte Klassen schreiben
  33. 33. Class Dependencies Eine Klasse kommt selten alleine Klassen hänge von anderen Klassen ab, diese hängen von anderen Klassen ab, diese hängen von anderen ... Problem: Klassen verweisen explizit auf andere Klassen $phoneBookManager = new PhoneBookManager
  34. 34. Dependency Injection In FLOW3 fragt eine Klasse nicht nach einer Instanz einer anderen Klasse; sie bekommt diese automatisch injiziert Das ist bekannt als das quot;Hollywood Principlequot;: quot;Don't call us, we'll call youquot; Ermöglicht eine lose Kopplung Verbessert den Programmierstil Vorraussetzung für Unit Tests
  35. 35. Konstruktor ohne Dependency-Injection /** * @var F3MyPackageModelCustomerRepository */ protected $customerRepository; /** * Constructor * * @author Robert Lemke <robert@typo3.org> */ public function __construct() { $this->customerRepository = F3MyPackageModel CustomerRepository::getInstance(); }
  36. 36. Klasse mit Constructor-Injection /** * @var F3MyPackageModelCustomerRepository */ protected $customerRepository; /** * Constructor * * @author Robert Lemke <robert@typo3.org> */ public function __construct(F3MyPackageModelCustomerRepository $customerRepository) { $this->customerRepository = $customerRepository; }
  37. 37. Klasse mit Setter-Injection /** * @var F3MyPackageModelCustomerRepository */ protected $customerRepository; /** * Injects the customer repository * * @author Robert Lemke <robert@typo3.org> */ public function injectCustomerRepository(F3MyPackageModelCustomerRepository $customerRepository) { $this->customerRepository = $customerRepository; }
  38. 38. Klasse mit Property-Injection /** * @var F3MyPackageModelCustomerRepository * @inject */ protected $customerRepository;
  39. 39. Aspektorientierte Programmierung
  40. 40. Aspektorientierte Programmierung AOP ist ein Programmierparadigma und ergänzt OOP OOP modularisiert „concerns“ (Aufgabenbereiche): durch Pakete, Klassen, Methoden AOP: cross-cutting concerns
  41. 41. Cross-cutting concerns Presentation The concerns live here Domain Data source
  42. 42. Cross-cutting concerns Domain Model Domain Model Domain Model CONCER NS Security X-ING Logging
  43. 43. Fehlende Funktionalität in PHP Mit AOP kann man alle „cross-cutting concerns“ zentralisieren und sauber separieren beliebige Methodenaufrufe abfangen neue Funktionalität zu Code hinzufügen, ohne diesen zu verändern ... viele weitere Tricks anwenden
  44. 44. Exkurs: Das Security-Framework $customer->setName(...) Presentation changeCustomerAction Security Framework Domain Customer Data source
  45. 45. Exkurs: Das Security-Framework $customer->setName(...) Presentation changeCustomerAction Security Framework Domain Customer Data source Touchless Security!
  46. 46. Test Driven Development
  47. 47. Test Driven Development ... ... means that you write an automated test, then you write just enough code to make that one test pass, then you refactor the code primarily to improve readability and remove duplication. Henrik Kniberg
  48. 48. Test Driven Development FAIL Test Case ?
  49. 49. Test Driven Development FAIL OK Test Case ? Implementation
  50. 50. Test Driven Development FAIL OK OK Refactoring Test Case ? Implementation
  51. 51. Test Driven Development FAIL OK OK Refactoring Test Case ? Implementation
  52. 52. Fluid The Zen of Templating http://www.sxc.hu/photo/821903
  53. 53. Was ist eine Template-Engine? übernimmt die Darstellung von Daten lebt in der View-Komponente Bekannte Engines Smarty *TAL Velocity Designer schreiben kein PHP, sondern HTML
  54. 54. Ziele für Fluid einfache, elegante Template-Engine vielfältige Unterstützung für den Template-Schreiber (z. B. Autocompletion) einfache und saubere Erweiterbarkeit durch Trennung in Core-Komponenten und View-Helper vielerlei Ausgabemedien möglich
  55. 55. Grundkonzepte von Fluid Ausgabelogik ist in View Helpers (Tags) gekapselt Namespace- Beispiel Deklaration {namespace f3=F3FluidViewHelpers} <f:linkaction=“someAction“>more</f:link> Aufruf eines View Helpers
  56. 56. Grundkonzepte von Fluid Jeder Tag entspricht einer Klasse 1. Beispiel {namespace f=F3FluidViewHelpers} <f:link>...</f:link> F3FluidViewHelpersLinkViewHelper 2. Beispiel {namespace f=F3FluidViewHelpers} <f:form.textbox />
  57. 57. Grundkonzepte von Fluid Variablen $this->view->assign(‘blogTitle’, $blog->getTitle()); <h1>Der Name des Blogs ist: {blogTitle}</h1>
  58. 58. Grundkonzepte von Fluid Object Accessors $this->view->assign(‘blog’, $blog); <h1>Der Name des Blogs ist: {blog.title}</h1> <p>Autor: {blog.author}</p> Getter / Setter werden automatisch aufgerufen
  59. 59. Grundkonzepte Arrays <f:link actionName=“show“ arguments=“{blog : blog, name : ‘Hallo’}“> Posting anzeigen </f:link> JSON-Objektsyntax
  60. 60. Beispiel-Template aus dem Blog-Example BlogExample/Resources/Private/Templates/Blog/index.html
  61. 61. Beispiel-Template aus dem Blog-Example BlogExample/Resources/Private/Templates/Blog/edit.html
  62. 62. Migration von v4 nach v5 TYPO3 Transition Days
  63. 63. FLOW3 - der aktuelle Stand Developing TYPO3 5.0 ...
  64. 64. Der aktuelle Stand Reflection Locale AOP Resource Log Object MVC Config. Session Package Cache Utility Persistence Error Validation Property Event 0% 50% 100% 0% 50% 100% 0% 50% 100%
  65. 65. Nächste Schritte erste FLOW3-Beta in 3 Monaten erste Pilotprojekte schon jetzt Weiterentwicklung des CMS Geplanter Beta-Release von TYPO3 5.0: Anfang 2010
  66. 66. The Berlin Manifesto We, the participants of the T3TD08 state that ... TYPO3 v4 continues to be actively developed v4 development will continue after the the release of v5 Future releases of v4 will see its features converge with those in TYPO3 v5 TYPO3 v5 will be the successor to TYPO3 v4 Migration of content from TYPO3 v4 to TYPO3 v5 will be easily possible TYPO3 v5 will introduce many new concepts and ideas. Learning never stops and we'll help with adequate resources to ensure a smooth transition.
  67. 67. Patrick Broens, Karsten Dambekalns, Dmitry Dulepov, Andreas Förthner, Oliver Hader, Martin Herr, Christian Jul Jensen, Thorsten Kahler, Steffen Kamper, Christian Kuhn, Sebastian Kurfürst, Martin Kutschker, Robert Lemke, Tobias Liebig, Benjamin Mack, Peter Niederlag, Jochen Rau, Ingo Renner, Ingmar Schlecht, Jeff Segars, Michael Stucki, Bastian Waidelich
  68. 68. Extbase — Das neue Framework für Extensions quot;Nachfolgerquot; von tslib_pibase Ausgewählte Komponenten und Paradigmen von FLOW3 wurden auf TYPO3 Version 4.3 portiert Transparente Persistenz des Domain-Models Model-View-Controller Validierung Ziele Schon jetzt mit „FLOW3-Paradigmen“ programmieren Migration des Codes vereinfachen Lernpfad zu TYPO3 v5 eröffnen
  69. 69. Controlle r Model Domain View Oth er Stu ff
  70. 70. Kickstarter für Extensions Nachfolger für den bisherigen Kickstarter Release geplant für Juli 2009 basiert auf den Prinzipien des Domain-Driven Design Projekt des Google Summer of Code 2009
  71. 71. Fluid — Die Template-Engine für FLOW3 und v4.x Fluid steht ab der Version 4.3 zur Verfügung automatische Portierung des Kerns von Fluid an TYPO3 v4 angepasste Tags und View-Helper Standard Template-Engine für Extbase
  72. 72. Getting Started
  73. 73. Links FLOW3 Website http://flow3.typo3.org TYPO3 Forge http://forge.typo3.org Download https://svn.typo3.org/FLOW3/Distribution/trunk https://svn.typo3.org/FLOW3/Distribution/branches/ BlogExample Fluid http://forge.typo3.org/projects/package-fluid http://blog.typoplanet.de
  74. 74. inspiring people to share.

×