Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

IPC 2017 - Legacy-Anwendungen mit Expressive modernisieren

231 Aufrufe

Veröffentlicht am

Überall hören Sie von den neuen Möglichkeiten, die Ihnen die modernen PHP-Frameworks und -Tools bieten können, doch Sie müssen immer noch an einer trägen und veralteten Legacy-Anwendung arbeiten? Ein kompletter Relaunch kommt aus Kostengründen und aufgrund stetig zu implementierender Features nicht in Frage? Mit dem Microframework Expressive können Sie beides vereinen. Sie können ein modernes und leichtgewichtiges Framework einsetzen und parallel dazu Ihre Legacy-Anwendung betreiben. Damit schaffen Sie die Grundlage, um Ihre Anwendung schrittweise zu modernisieren und damit wettbewerbsfähig zu bleiben.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

IPC 2017 - Legacy-Anwendungen mit Expressive modernisieren

  1. 1. Legacy Anwendungen mitLegacy Anwendungen mit ZendExpressive modernisierenZendExpressive modernisieren
  2. 2. Ralf EggertRalf Eggert CEO Travello GmbH, ZF Trainer, Autor, Coach,CEO Travello GmbH, ZF Trainer, Autor, Coach, PHP Entwickler & Alexa Skill EntwicklerPHP Entwickler & Alexa Skill Entwickler
  3. 3. Fragen ans PublikumFragen ans Publikum
  4. 4. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 44 vonvon 5353 AgendaAgenda Teil 1: Überblick ZendExpressiveTeil 1: Überblick ZendExpressive Teil 2: Vorbereitungen für MigrationTeil 2: Vorbereitungen für Migration Teil 3: Migration vom ZF1 MVC zu ZF3 MiddlewareTeil 3: Migration vom ZF1 MVC zu ZF3 Middleware Bonus-Teil 4: Migration anderer Projekte zu ZF3 MiddlewareBonus-Teil 4: Migration anderer Projekte zu ZF3 Middleware
  5. 5. Teil 1Teil 1 Überblick ZendExpressiveÜberblick ZendExpressive
  6. 6. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 66 vonvon 5353 Zend Framework 3Zend Framework 3 Ich bin zwei Öltanks FRAMEWORKS FRAMEWORKS
  7. 7. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 77 vonvon 5353 Was ist der PSR-7?Was ist der PSR-7?
  8. 8. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 88 vonvon 5353 Was istWas ist derder PSR-15?PSR-15?
  9. 9. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 99 vonvon 5353 Zend Framework KomponentenZend Framework Komponenten ZEND DIACTOROS ZENDSTRATIGILITY ZENDEXPRESSIVE HTTP MESSAGES /PSR-7 MIDDLEWARE / PSR-15 MIDDLEWARE APPLICATIONS
  10. 10. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1010 vonvon 5353 ZendExpressiveZendExpressive KomponentenKomponenten Router DI Container Template Renderer Error Handler Aura.Router FastRoute ZendRouter Weitere Router Aura.DI Pimple-interop Zend ServiceManager Weitere DI Container Plates Twig ZendView Weitere Template-Engines Whoops Weitere Error-Handler
  11. 11. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1111 vonvon 5353 Klassischer HTTP RequestKlassischer HTTP Request CLIENT WEBSERVER HTTP REQUEST HTTP RESPONSE
  12. 12. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1212 vonvon 5353 Middleware-RequestMiddleware-Request HTTP Request HTTP Response Middleware-Pipeline
  13. 13. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1313 vonvon 5353 Middleware-PipelineMiddleware-Pipeline HTTP Request HTTP Response Routing Middleware Authorization Middleware Dispatching Middleware
  14. 14. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1414 vonvon 5353 Middleware-AktionenMiddleware-Aktionen HTTP Request HTTP Response Routing Middleware Action Middleware Authorization Middleware Dispatching Middleware
  15. 15. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1515 vonvon 5353 Beispiele für Action-MiddlewareBeispiele für Action-Middleware
  16. 16. Teil 2Teil 2 Vorbereitungen für MigrationVorbereitungen für Migration
  17. 17. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1717 vonvon 5353 1. Eigener Branch für Migration1. Eigener Branch für Migration
  18. 18. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1818 vonvon 5353 2. Upgrade auf neuestes PHP 72. Upgrade auf neuestes PHP 7
  19. 19. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1919 vonvon 5353 3. Composer installieren3. Composer installieren
  20. 20. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2020 vonvon 5353 4. Autoloading nur per Composer4. Autoloading nur per Composer
  21. 21. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2121 vonvon 5353 5. Alle Pakete (!) per Composer5. Alle Pakete (!) per Composer
  22. 22. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2222 vonvon 5353 6. Anwendung lauffähig machen6. Anwendung lauffähig machen
  23. 23. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2323 vonvon 5353 7. Expressive separat installieren7. Expressive separat installieren
  24. 24. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2424 vonvon 5353 Checkliste VorbereitungenCheckliste Vorbereitungen Eigenen Branch für Migration einrichtenEigenen Branch für Migration einrichten 11 Upgrade auf PHP 7Upgrade auf PHP 7 22 Composer installieren (falls noch nicht geschehen)Composer installieren (falls noch nicht geschehen) 33 Autoloading ausschließlich über Composer einrichtenAutoloading ausschließlich über Composer einrichten 44 Alle Pakete und Abhängigkeiten per Composer installierenAlle Pakete und Abhängigkeiten per Composer installieren 55 Anwendung lauffähig machenAnwendung lauffähig machen 66 Expressive Skeleton in separatem Verzeichnis installierenExpressive Skeleton in separatem Verzeichnis installieren 77
  25. 25. Teil 3Teil 3 Migration vom ZF1 MVC zu ZF3 MiddlewareMigration vom ZF1 MVC zu ZF3 Middleware
  26. 26. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2626 vonvon 5353 1. Eigenes Legacy Verzeichnis1. Eigenes Legacy Verzeichnis Vorher  application  controllers  forms  models  views  Bootstrap.php  data  cache  library  Custom  public  css  img  index.php  vendor  zendframework  composer.json Nachher  data  cache  legacy  application  controllers  forms  models  views  Bootstrap.php  library  Custom  public  css  img  index.php  vendor  zendframework  composer.json
  27. 27. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2727 vonvon 5353 2. ZendExpressive installieren2. ZendExpressive installieren Vorher  data  cache  legacy  application  library  public  css  img  index.php  vendor  composer.json Nachher  config  autoload  config.php  container.php  data  cache  legacy  application  library  module  Application  public  css  img  index.php.bak (ZF1)  index.php (ZF3)  vendor  composer.json
  28. 28. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2828 vonvon 5353 2. ZendExpressive testen2. ZendExpressive testen
  29. 29. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2929 vonvon 5353 3. Legacy Application Middleware3. Legacy Application Middleware namespace LegacyMiddleware; use InteropHttpServerMiddlewareDelegateInterface; use InteropHttpServerMiddlewareMiddlewareInterface; use PsrHttpMessageServerRequestInterface; use ZendDiactorosResponseHtmlResponse; use ZendExpressiveRouterRouteResult; class LegacyApplicationMiddleware implements MiddlewareInterface { public function process(ServerRequestInterface $request, DelegateInterface $delegate) { $result = $request->getAttribute(RouteResult::class, false); if ($result instanceof RouteResult) { return $delegate->process($request); } ob_start(); $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap(); $application->run(); $output = ob_get_contents(); ob_end_clean(); return new HtmlResponse($output); } }
  30. 30. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3030 vonvon 5353 3. ZF3 Startseite testen3. ZF3 Startseite testen
  31. 31. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3131 vonvon 5353 3. ZF1 Anwendung testen3. ZF1 Anwendung testen
  32. 32. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3232 vonvon 5353 3. ZF3 Home Route ausblenden3. ZF3 Home Route ausblenden
  33. 33. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3333 vonvon 5353 4. Neue Test-Aktion4. Neue Test-Aktion Vorher  config  data  legacy  module  Application  src  Action  HomePageAction.php  Router  RouterDelegatorFactory.php  templates  application  home-page.phtml  public  vendor  composer.json Nachher  config  data  legacy  module  Application  src  Action  HomePageAction.php  ZF3TestAction.php  Router  RouterDelegatorFactory.php  templates  application  home-page.phtml  zf3-test.phtml  public  vendor  composer.json
  34. 34. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3434 vonvon 5353 4. ZF3 Aktion testen4. ZF3 Aktion testen
  35. 35. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3535 vonvon 5353 4. Design anpassen4. Design anpassen
  36. 36. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3636 vonvon 5353 4. ZF1 Anwendung testen4. ZF1 Anwendung testen
  37. 37. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3737 vonvon 5353 Wichtiger Meilenstein erreichtWichtiger Meilenstein erreicht
  38. 38. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3838 vonvon 5353 Wichtiger Meilenstein erreichtWichtiger Meilenstein erreicht ZF1 und ZF3 laufen parallel
  39. 39. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3939 vonvon 5353 Wichtiger Meilenstein erreichtWichtiger Meilenstein erreicht ZF1 und ZF3 laufen parallel Alte ZF1 Anwendung kann weiter gewartet werden
  40. 40. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4040 vonvon 5353 Wichtiger Meilenstein erreichtWichtiger Meilenstein erreicht ZF1 und ZF3 laufen parallel Alte ZF1 Anwendung kann weiter gewartet werden Neue Features können in ZF3 implementiert werden
  41. 41. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4141 vonvon 5353 Wichtiger Meilenstein erreichtWichtiger Meilenstein erreicht ZF1 und ZF3 laufen parallel Alte ZF1 Anwendung kann weiter gewartet werden Neue Features können in ZF3 implementiert werden ZF1 und ZF3 nutzen dasselbe Design
  42. 42. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4242 vonvon 5353 5. Ressourcen & Plugins portieren5. Ressourcen & Plugins portieren Controller Plugins Ressourcen Konfiguration Factories Middleware Pipeline ZF1 ZF3
  43. 43. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4343 vonvon 5353 5. Ressourcen & Plugins portieren5. Ressourcen & Plugins portieren Controller Plugins Ressourcen Konfiguration Factories Middleware Pipeline ZF1 ZF3 Bootstrap Datei
  44. 44. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4444 vonvon 5353 5. Ressourcen & Plugins portieren5. Ressourcen & Plugins portieren Zend_ApplicationZend_Application Ressourcen nach ZF3 portierenRessourcen nach ZF3 portieren Zend_ControllerZend_Controller Plugins nach ZF3 portierenPlugins nach ZF3 portieren ZF1 Bootstrap Klasse nicht vergessenZF1 Bootstrap Klasse nicht vergessen Portierung in Konfigurationsdateien und Middleware PipelinePortierung in Konfigurationsdateien und Middleware Pipeline Beispiele: Config für Datenbanken, Caching, Mailsettings, etc.Beispiele: Config für Datenbanken, Caching, Mailsettings, etc. Plugins: Authentifizierung, Autorisierung, Internationalisierung, etc.Plugins: Authentifizierung, Autorisierung, Internationalisierung, etc. Anwendung lauffähig machenAnwendung lauffähig machen
  45. 45. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4545 vonvon 5353 6. Aktionen migrieren6. Aktionen migrieren Customer Controller Create Customer Action Update Customer Action Delete Customer Action ZF1 ZF3
  46. 46. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4646 vonvon 5353 6. Aktionen migrieren6. Aktionen migrieren Erst nur eine Controller Action migrierenErst nur eine Controller Action migrieren Routing für Aktion in ZF3 Expressive definierenRouting für Aktion in ZF3 Expressive definieren Action Middleware erstellen mit Code aus Controller ActionAction Middleware erstellen mit Code aus Controller Action Template aus ZF1 Anwendung in ZF3 Anwendung schiebenTemplate aus ZF1 Anwendung in ZF3 Anwendung schieben Aktion unter ZF3 lauffähig bekommen und ZF1 aufräumenAktion unter ZF3 lauffähig bekommen und ZF1 aufräumen Mit allen anderen Aktionen fortfahrenMit allen anderen Aktionen fortfahren Anwendung lauffähig machenAnwendung lauffähig machen
  47. 47. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4747 vonvon 5353 7. ZF1 Komponenten migrieren7. ZF1 Komponenten migrieren Zend_Form Zend_Db Zend ServiceManager ZendDb ZendForm ZF1 ZF3 Zend_Registry
  48. 48. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4848 vonvon 5353 7. ZF1 Komponenten migrieren7. ZF1 Komponenten migrieren ZF1 Komponenten schrittweise durch ZF3 Komponenten austauschenZF1 Komponenten schrittweise durch ZF3 Komponenten austauschen Zend_RegistryZend_Registry →→ ZendServiceManagerZendServiceManager (Dependency Injection)(Dependency Injection) Zend_DbZend_Db →→ ZendDbZendDb (Modelklassen und Datenbankanbindung)(Modelklassen und Datenbankanbindung) Zend_FormZend_Form →→ ZendFormZendForm (Formulare)(Formulare) Alle weitere ZF1 Komponenten durch ZF3 Komponenten austauschenAlle weitere ZF1 Komponenten durch ZF3 Komponenten austauschen Alte Legacy Anwendung komplett entfernenAlte Legacy Anwendung komplett entfernen Anwendung lauffähig machenAnwendung lauffähig machen
  49. 49. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4949 vonvon 5353 Checkliste ZF1 MVC ZF3 MW→Checkliste ZF1 MVC ZF3 MW→ Legacy Anwendung in eigenes Verzeichnis schiebenLegacy Anwendung in eigenes Verzeichnis schieben 11 ZendExpressiveZendExpressive manuell installierenmanuell installieren 22 Middleware für Legacy Anwendung einrichtenMiddleware für Legacy Anwendung einrichten 33 Test-Aktion mit neuer Route einrichten und Design anpassenTest-Aktion mit neuer Route einrichten und Design anpassen 44 ZF1 Application Ressourcen & MVC Plugins zum ZF3 portierenZF1 Application Ressourcen & MVC Plugins zum ZF3 portieren 55 Controller-Aktionen zu Middleware-Aktionen migrierenController-Aktionen zu Middleware-Aktionen migrieren 66 Restliche ZF1 Komponenten migrierenRestliche ZF1 Komponenten migrieren 77
  50. 50. Bonus-Teil 4Bonus-Teil 4 Migration anderer Projekte zu ZF3 MiddlewareMigration anderer Projekte zu ZF3 Middleware
  51. 51. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5151 vonvon 5353 Checkliste Custom ZF3 MW→Checkliste Custom ZF3 MW→ Legacy Anwendung in eigenes Verzeichnis schiebenLegacy Anwendung in eigenes Verzeichnis schieben 11 ZendExpressiveZendExpressive manuell installierenmanuell installieren 22 Middleware für Legacy Anwendung einrichtenMiddleware für Legacy Anwendung einrichten 33 Test-Aktion mit neuer Route einrichten und Design anpassenTest-Aktion mit neuer Route einrichten und Design anpassen 44 Konfigurationen und »Objekte« portierenKonfigurationen und »Objekte« portieren 55 Seiten zu Middleware-Aktionen migrierenSeiten zu Middleware-Aktionen migrieren 66 Restliche Komponenten ersetzenRestliche Komponenten ersetzen 77
  52. 52. Fragen?Fragen?
  53. 53. Danke!Danke! Mail: ralf@travello.deMail: ralf@travello.de Web: www.zendframeworkschulung.deWeb: www.zendframeworkschulung.de

×