Slide 1

Slide 1 text

Architektur in PHP-Applikationen Langlebige Produkte mit PHP entwickeln 
 am Beispiel von Symfony Forms integriert in TYPO3

Slide 2

Slide 2 text

Steve Schütze Senior PHP-Developer @freshprince2b @freshp [email protected]

Slide 3

Slide 3 text

Agenda Ausgangssituation 05 Früher 06 Benefits 07 Warum 04 Paketbasierte Entwicklung 9 Trennung von Business-
 & Framework-Logik 11 Wie 8 Was 13 Erfahrungen 14 Beispiele 15 Nach- & Vorteile 16

Slide 4

Slide 4 text

Warum

Slide 5

Slide 5 text

Ausgangssituation Individualentwicklung mit TYPO3 Extbase Langfristig zu betreuende Projekte mindestens komplizierte 
 Anforderungen mögl. hohe Testabdeckung Um welchen Kontext geht es eigentlich? Abbildung 1

Slide 6

Slide 6 text

Früher alles in Extbase meistens riesengroße Controller (wie vorher in piBase) keine Trennung von Business und Framework-Logik Testen meistens unmöglich, schwer oder nur mit Akzeptanztests Was haben wir vorher getan? Abbildung 2

Slide 7

Slide 7 text

Benefits schnellerer Wechsel der Frameworks Aufteilung in Pakete für Wiederverwendbarkeit hohe Testabdeckung Langfristige Erweiterbarkeit und Wartbarkeit Was haben wir uns erhofft? Abbildung 3 Abbildung 4

Slide 8

Slide 8 text

Wie

Slide 9

Slide 9 text

Paketbasierte Entwicklung Konzeption ist alles Applikation in Schichten auftrennen (horizontal) Applikation nach Views aufteilen (vertikal) mehr: Principles of Package Design Composer macht es möglich Grafik 1

Slide 10

Slide 10 text

Paketbasierte Entwicklung Grafik 2

Slide 11

Slide 11 text

Trennung eigenständig lauffähig kleinstmögliche Abhängigkeiten (bspw. nicht die komplette Datenbankabstraktion) so wenig Hürden wie möglich für die Arbeit im Team mehr: Defensive Programming mehr: Clean Coder Welche Anforderung habe ich an die Business-Logik?

Slide 12

Slide 12 text

Trennung Routing inkl. URL-Generierung Konfiguration der Module (Business-Logik) Datenbank-Abstraktion Session-Handling Caching Welche Anforderung habe ich an die Framework-Logik?

Slide 13

Slide 13 text

Was

Slide 14

Slide 14 text

Erfahrungen Lohnt sich das? JA! (für uns auf jeden Fall) Es hilft die Business-Logik zu verstehen Durch die Schichten und die hohe Testabdeckung sinkt die Fehlerquote Es entstehen keine unsichtbaren Abhängigkeiten Es fördert die Dokumentation (z.B. composer-graph) Keine Entwicklung ohne Gesamtkonzept

Slide 15

Slide 15 text

Beispiele Was muss ich nun tun? endlich Code typo3-application-connector-extension example-contact-form-application

Slide 16

Slide 16 text

Nachteile Was stört mich daran? Abhängigkeiten zwischen den Paketen erschweren Updates (Bsp. Update in der untersten Ebene) Abhängigkeiten in den Paketen können mit dem Trägersystem kollidieren

Slide 17

Slide 17 text

Vorteile Was gefällt mir am besten? Applikation auch ohne Trägersystem lauffähig Assets im Trägersystem überschreibbar Kernkompetenzen ausspielen Stabilität Pakete können mit sehr wenigen Abhängigkeiten entwickelt werden kleine Pakete erhöhen das Verständnis kombinierbar mit CQRS, DDD oder weiteren

Slide 18

Slide 18 text

Danke! @freshprince2b @freshp [email protected]

Slide 19

Slide 19 text

Quellenangabe Abbildung 1: https://www.researchgate.net/figure/Stacey-Complexity-Matrix-from-Stacey-2012_fig5_305969672 
 Stand 23.01.2019 Abbildung 2: https://www.informatik-aktuell.de/entwicklung/methoden/tdd-erfahrungen-bei-der-einfuehrung.html 
 Stand 23.01.2019 Abbildung 3: https://thecodinglove.com/when-getting-a-first-look-at-the-project 
 Stand 23.01.2019 Abbildung 4: https://www.kunst-fuer-alle.de/english/fine-art/artist/image/prisma-(f1-online)/6248/1/432064/ eierlegende,-genmanipulation,-haehne,-schweine,-illustration/index.htm
 Stand 23.01.2019 Grafik 1: Composer Graph, erstellt aus einem Beispiel mittels https://github.com/clue/graph-composer Grafik 2: Paketübersicht, erstellt mittels https://www.draw.io/ Abbildungen