SlideShare a Scribd company logo
1 of 65
Download to read offline
1
Layer Architektur
In Symfony
wesolowski
Rafał Wesołowski
WesolowskiRafal
Rafał Wesołowski
Beruf:
• Developer Evangelist bei NEXUS United a valantic company
• Ausbilder
• PHP Experte
• SOLID Principles and TDD Enthusiast
• Innovations Fan
Privat:
• Kampfsportler
• Mehrfacher Polen-Meister im Ju-Jitsu
• Jugend-Fußball Trainer
• Aktiver Amateur-Boxer
3
E-Commere
OXID eSales
Shopware
Spryker
Symfony
4
Positiv
• Alles ist erweiterbar
• Wenig JOINS
• Performance Optimierung
• Table Views
Negativ
• OXID Entwickler, nicht PHP- Entwickler
• Wenig Composer, keine Namespace
• OOP???
Was habe ich gelernt und erfahren?
5
Positiv
• Stärke von Full-Page-Cache
• Service und Dekoration von Services
• Private Methode als Standard
• Single Point of Truth
Negativ
• Schwäche von Full-Page-Cache
• Events sind schlecht
• JOINS und Table lock
Was habe ich gelernt und erfahren?
6
Positiv
• Layer-Architektur
• CQRS
• DTO
• SOLID
• PostgreSQL
Negativ
• Komplexität
• Herausfordernd für unerfahrene Entwickler
• Kein Single Point of Truth
• Spryker Entwickler, nicht PHP- Entwickler
Was habe ich gelernt und erfahren?
7
8
Code-Applikation Symfony
https://github.com/slashfan/symfony-realworld-example-app
9
Code-Applikation Symfony
10
Code-Applikation Symfony
11
12
Wenn du deinen Code kennst und weißt was der Kunde noch will
13
Lösung
SOLID design principles
Agile Pattern
Extremely defensive*
You aren't gonna need it
* Extremely Defensive PHP - Marco Pivetta: https://www.youtube.com/watch?v=8d2AtAGJPno
Austauschbarkeit
14
Eine Applikation erstellen
Brillen Konfigurator
Deutscher Markt
Handler
SAP Import / Export
15
Eine Applikation erstellen
Brillen Konfigurator
Deutscher Markt
Handler
SAP Import / Export
16
Softwarearchitektur
Import
• User
• Filter incl. Produkte
• Produkt Bilder
Frontend
• User Login
• Admin User
• Formulare
• Konfigurator
• Freigabe
• BlackList Konfigurator
• Rolen:
• Admin
• User
• Optiker
Export
• SAP Bestellung
Technische
Anforderungen
• Symfony
• Doctrine
• Twig
• MySQL
• Psalm
• phpUnit
• Deptrac
• Piplines
17
Softwarearchitektur - MVC
Import
• User
• Filter incl. Produkte
• Produkt Bilder
Frontend
• User Login
• Admin User
• Formulare
• Konfigurator
• Freigabe
• BlackList Konfigurator
• Rolen:
• Admin
• User
• Optiker
Export
• SAP Bestellung
Doctrine
18
Wo ist die Business Logik bei MVC
https://softwareengineering.stackexchange.com/questions/176639/why-put-the-business-logic-in-the-model-what-happens-when-i-have-multiple-types
19
Softwarearchitektur - MVC
20
Schichtenarchitektur
Communication Layer
Controllers, Console-Commands
21
Schichtenarchitektur
Communication Layer
Business Layer
Controllers, Console-Commands
Entry class (Facade- or Proxy Pattern)
22
Schichtenarchitektur
Communication Layer
Business Layer
Persistence Layer
Controllers, Console-Commands
Entry class (Facade- or Proxy Pattern)
Database (z.B. Doctrine Entity und Reposiotry)
23
Schichtenarchitektur
Presentation LayerCommunication Layer
Business Layer
Persistence Layer
Controllers, Console-Commands Twig, Smarty, JS, CSS …
Entry class (Facade- or Proxy Pattern)
Database (z.B. Doctrine Entity und Reposiotry)
24
SchichtenarchitekturBusiness Layer
25
Schichtenarchitektur
Communication Layer
Business Layer
Persistence Layer
Business LayerBusiness Layer
Persistence Layer Persistence Layer
26
Schichtenarchitektur
Read (Repository)
Business Layer
Persistence Layer
Write (Manager)
27
Softwarearchitektur in die Applikation (User Beispiel)
Frontend Backend Client Persistence
Global
User
Login
Admin
Password
User
CSV Import
User
Auto-Update
SAP Info
User
Write
(Manager)
Read
(Repository)
ModulFunktion
28
Kommunikation in die Applikation (User Beispiel)
Frontend Backend
Client
Persistence
29
Kommunikation in die Applikation (User Beispiel)
Frontend Client
Persistence
User
Auto-Update
User
SAP Info
30
User Aktualisierung Beispiel
Frontend
User Auto-Update
Client
User
31
User Aktualisierung Beispiel
Client
User SAP Info
Client
User
32
Applikation
33
Filter
Frontend
Filter Facade
Frontend
Filter Controller
34
Was soll FilterFacade dem Controller zurückgeben?
Frontend
Filter Facade
Frontend
Filter Controller
35
Data transfer object (DTO) vs Array
https://github.com/shopware/shopware/blob/5.6/engine/Shopware/Controllers/Frontend/Detail.php
36
Data transfer object (DTO)
Typen:
• Bool
• Integer
• Float
• String
• Array of DTOs
• DTO
Methoden:
• set
• get
• has
• required (value ist not empty)
37
Data transfer object (DTO)
https://github.com/xervice/data-provider
https://github.com/orbit-core/data-transferIn Zukunft:
Jetzt:
38
Filter
Frontend
Filter Facade
Frontend
Filter Controller
39
Filter
Frontend
Filter Facade
Frontend
Filter Model/Filter
Client
Filter Facade
40
Filter
Client
Filter Facade
41
Filter
Client
Filter Facade
42
Filter
Client
Filter Facade
43
DTO und Semantic Versioning
44
Filter
45
Filter - ElasticSearchFilterRequestDataProvider
46
Filter - ElasticSearchFilterRequestDataProvider
47
Schichtenarchitektur
Communication Layer
Business Layer
Persistence Layer
Controllers, Console-Commands
Entry class (Facade- or Proxy Pattern)
Database (z.B. Doctrine Entity und Reposiotry)
48
https://github.com/sensiolabs-de/deptrac
49
Schichtenarchitektur und Deptrac
Communication Layer
Business Layer
Persistence Layer
Controllers, Console-Commands
Entry class (Facade- or Proxy Pattern)
Database (z.B. Doctrine Entity und Reposiotry)
50
Schichtenarchitektur und Deptrac
Was liefert das Repository?:
Entity
Wo speichere ich das Entity?
Überall wo ich den DoctrineORMEntityManager habe
https://symfony.com/doc/current/doctrine.html
51
Wo speichere ich das Entity?
Twig?
52
Wo speichere ich das Entity?
53
Deptrac
54
Repository
55
Entity Mapper / Converter
56
Datenbank
1
1
*
*
57
Datenbank
58
Datenbank
59
Schichtenarchitektur
Communication Layer Business Layer Persistence Layer
Controllers, Console-Commands Facade-class Doctrine: Reposiotry und Manager
Symfony PHP Doctrine
DTO
DTO
60
Schichtenarchitektur
Communication Layer Business Layer
Controllers, Console-Commands Facade-class
Laminas PHP Cycle ORM
DTO
DTO
Persistence Layer
Cycle ORM: Repository und Manager
61
Schichtenarchitektur
Communication Layer Business Layer
Persistence Layer
Controllers, Console-Commands Facade-class
Doctrine: Reposiotry und Manager
Symfony PHP Doctrine und Redis
DTO
DTO
Persistence Cache Layer
Redis
62
Schichtenarchitektur
Communication Layer Business Layer Persistence Layer
Controllers, Console-Commands Facade-class Doctrine: Reposiotry und Manager
Symfony PHP Doctrine
DTO
DTO
Facade
IntegrationTest
63
Schichtenarchitektur Plus
User-Modul Aufgaben:
• Passwort setzen / zurücksetzen
• Mail an User senden
• User in SAP aktualisieren (triggern)
• Zuweisung zwischen Firmen
Ist das SOLID?
https://www.pinterest.de/pin/370421138074099923/
64
Schichtenarchitektur Plus
User
User-Mail
User-Password
User
User-SAP
User-to-Company
65
Q&A

More Related Content

Similar to Schichtenarchitektur in Symfony Projekten

Dipl.-Ing. Leopold Peneder (HC Solutions)
Dipl.-Ing. Leopold Peneder (HC Solutions)Dipl.-Ing. Leopold Peneder (HC Solutions)
Dipl.-Ing. Leopold Peneder (HC Solutions)Agenda Europe 2035
 
Creasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus EntwicklersichtCreasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus EntwicklersichtCreasoft AG
 
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...Alfresco Software
 
AdminCam 2017 IBM Connections Troubleshooting
AdminCam 2017 IBM Connections  TroubleshootingAdminCam 2017 IBM Connections  Troubleshooting
AdminCam 2017 IBM Connections TroubleshootingNico Meisenzahl
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & ToolsUlrich Krause
 
XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0thoemmes
 
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 MinutenGerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 MinutenRoland Mast
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringQAware GmbH
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015AboutYouGmbH
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
Top 10 Internet Trends 2007
Top 10 Internet Trends 2007Top 10 Internet Trends 2007
Top 10 Internet Trends 2007Jürg Stuker
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt socDaniel Fisher
 
SharePoint Community Mittelland @ isolutions: SharePoint in der Cloud
SharePoint Community Mittelland @ isolutions: SharePoint in der CloudSharePoint Community Mittelland @ isolutions: SharePoint in der Cloud
SharePoint Community Mittelland @ isolutions: SharePoint in der CloudDavid Schneider
 
Plone im Kontext des WCMS Marktes
Plone im Kontext des WCMS MarktesPlone im Kontext des WCMS Marktes
Plone im Kontext des WCMS MarktesAlexander Loechel
 
Avoid Network-Issues and Polling
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and PollingKai Donato
 
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-CodequalitätFotiosKaramitsos
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringQAware GmbH
 

Similar to Schichtenarchitektur in Symfony Projekten (20)

Dipl.-Ing. Leopold Peneder (HC Solutions)
Dipl.-Ing. Leopold Peneder (HC Solutions)Dipl.-Ing. Leopold Peneder (HC Solutions)
Dipl.-Ing. Leopold Peneder (HC Solutions)
 
Creasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus EntwicklersichtCreasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus Entwicklersicht
 
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
 
AdminCam 2017 IBM Connections Troubleshooting
AdminCam 2017 IBM Connections  TroubleshootingAdminCam 2017 IBM Connections  Troubleshooting
AdminCam 2017 IBM Connections Troubleshooting
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
 
XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0XAML UI DEVELOPMENT BEST PRACTICES 2.0
XAML UI DEVELOPMENT BEST PRACTICES 2.0
 
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 MinutenGerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
 
Amazon Web Services
Amazon Web ServicesAmazon Web Services
Amazon Web Services
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
Top 10 Internet Trends 2007
Top 10 Internet Trends 2007Top 10 Internet Trends 2007
Top 10 Internet Trends 2007
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
 
SharePoint Community Mittelland @ isolutions: SharePoint in der Cloud
SharePoint Community Mittelland @ isolutions: SharePoint in der CloudSharePoint Community Mittelland @ isolutions: SharePoint in der Cloud
SharePoint Community Mittelland @ isolutions: SharePoint in der Cloud
 
Plone im Kontext des WCMS Marktes
Plone im Kontext des WCMS MarktesPlone im Kontext des WCMS Marktes
Plone im Kontext des WCMS Marktes
 
Avoid Network-Issues and Polling
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and Polling
 
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
 
Whitecoast lcty12 x_pages
Whitecoast lcty12 x_pagesWhitecoast lcty12 x_pages
Whitecoast lcty12 x_pages
 
Apache Solr Revisited 2015
Apache Solr Revisited 2015Apache Solr Revisited 2015
Apache Solr Revisited 2015
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 

Schichtenarchitektur in Symfony Projekten