Architektur in PHP-Applikationen

Architektur in PHP-Applikationen

Langlebige Produkte mit PHP entwickeln, 
am Beispiel von Symfony Forms integriert in TYPO3. Beispiele unter https://github.com/freshp/example-contact-form-application und https://github.com/freshp/typo3-application-connector-extension

1e3f36cacc64d0a924cdbb3fdc59e8af?s=128

move:elevator

January 25, 2019
Tweet

Transcript

  1. Architektur in PHP-Applikationen Langlebige Produkte mit PHP entwickeln 
 am

    Beispiel von Symfony Forms integriert in TYPO3
  2. Steve Schütze Senior PHP-Developer @freshprince2b @freshp sts@move-elevator.de

  3. 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
  4. Warum

  5. Ausgangssituation Individualentwicklung mit TYPO3 Extbase Langfristig zu betreuende Projekte mindestens

    komplizierte 
 Anforderungen mögl. hohe Testabdeckung Um welchen Kontext geht es eigentlich? Abbildung 1
  6. 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
  7. 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
  8. Wie

  9. 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
  10. Paketbasierte Entwicklung Grafik 2

  11. 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?
  12. Trennung Routing inkl. URL-Generierung Konfiguration der Module (Business-Logik) Datenbank-Abstraktion Session-Handling

    Caching Welche Anforderung habe ich an die Framework-Logik?
  13. Was

  14. 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
  15. Beispiele Was muss ich nun tun? endlich Code typo3-application-connector-extension example-contact-form-application

  16. 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
  17. 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
  18. Danke! @freshprince2b @freshp sts@move-elevator.de

  19. 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