Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

IPC2017SE - Zend\Expressive Workshop

384 views

Published on

Meine Slides für den ganzjährigen Workshop zu Zend\Expressive auf der International PHP Conference 2017 Spring Edition. Die Slides bilden die Grundlagen für den Workshop.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

IPC2017SE - Zend\Expressive Workshop

  1. 1. Workshop: Zend Framework 3Workshop: Zend Framework 3 Middleware-Anwendungen bauenMiddleware-Anwendungen bauen
  2. 2. Ralf EggertRalf Eggert CEO Travello GmbH, PHP Entwickler,CEO Travello GmbH, PHP Entwickler, Zend Framework Trainer, Autor & Coach sowieZend Framework Trainer, Autor & Coach sowie Amazon Alexa Skill EntwicklerAmazon Alexa Skill Entwickler
  3. 3. FrageFrage Welche Aspekte interessieren Sie am meisten?Welche Aspekte interessieren Sie am meisten?
  4. 4. Ralf EggertRalf Eggert 44 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Agenda ● Teil 1: Einführung in ZendExpressive ● Teil 2: Installation & Aufbau der Anwendung ● Teil 3: Anwendungsmodule ● Teil 4: Middleware-Aktionen ● Teil 5: Datenbankanbindung ● Teil 6: Formulare und Formularverarbeitung ● Teil 7: Zusammenfassung
  5. 5. AblaufAblauf Theorie, Live-Coding, Fragen & DiskussionTheorie, Live-Coding, Fragen & Diskussion
  6. 6. Teil 1Teil 1 Einführung inEinführung in ZendExpressiveZendExpressive
  7. 7. FrageFrage Wer kennt die PHP-FIG und den PSR-7?Wer kennt die PHP-FIG und den PSR-7?
  8. 8. Ralf EggertRalf Eggert 88 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Was ist die PHP-FIG?
  9. 9. Ralf EggertRalf Eggert 99 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Was ist der PSR-7?
  10. 10. Ralf EggertRalf Eggert 1010 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Klassischer HTTP Request CLIENT WEBSERVER HTTP REQUEST HTTP RESPONSE
  11. 11. Ralf EggertRalf Eggert 1111 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Middleware-Request HTTP Request HTTP Response Middleware
  12. 12. Ralf EggertRalf Eggert 1212 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Middleware-Pipeline HTTP Request HTTP Response Routing Middleware Authorization Middleware Dispatching Middleware
  13. 13. Ralf EggertRalf Eggert 1313 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Action-Middleware HTTP Request HTTP Response Routing Middleware Action Middleware Authorization Middleware Dispatching Middleware
  14. 14. Ralf EggertRalf Eggert 1414 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Zend Framework Komponenten ZEND DIACTOROS ZENDSTRATIGILITY ZENDEXPRESSIVE PSR-7 MIDDLEWARE / PSR-15 MIDDLEWARE APPLICATIONS
  15. 15. Ralf EggertRalf Eggert 1515 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop ZendExpressive Komponenten 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-Engine Whoops Weiterer Error-Handler
  16. 16. Teil 2Teil 2 Installation & Aufbau der AnwendungInstallation & Aufbau der Anwendung
  17. 17. Ralf EggertRalf Eggert 1717 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop ZendExpressive installieren I
  18. 18. Ralf EggertRalf Eggert 1818 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop ZendExpressive installieren II
  19. 19. Ralf EggertRalf Eggert 1919 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop ZendExpressive installieren III
  20. 20. Ralf EggertRalf Eggert 2020 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Workshop Repository installieren $ cd /home/devhost/ $ git clone https://github.com/RalfEggert/ipc2017-expressive $ cd ipc2017-expressive/ $ sudo chmod 777 -R data/ $ composer install $ composer development-enable $ composer serve
  21. 21. Ralf EggertRalf Eggert 2121 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Workshop Expressive Anwendung
  22. 22. Ralf EggertRalf Eggert 2222 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Virtual Host für Apache 2 <VirtualHost 127.0.0.1> ServerName ipc2017.expressive DocumentRoot /home/devhost/konferenzen/ipc2017-expressive/public/ AccessFileName .htaccess SetEnv APPLICATION_ENV development <Directory /home/devhost/konferenzen/ipc2017-expressive/public/> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost>
  23. 23. FrageFrage Läuft bei allen die Anwendung im Browser?Läuft bei allen die Anwendung im Browser?
  24. 24. Ralf EggertRalf Eggert 2424 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Aufbau der Anwendung  bin  clear-config-cache.php  config  autoload  dependencies.global.php  dependencies.local.php.dist  local.php.dist  router.global.php  templates.global.php  zend-expressive.global.php  config.php  container.php  development.config.php.dist  pipeline.php  routes.php  data  cache  db  module  App  public  .htaccess  db-check.php  index.php  test  AppTest  ...  vendor  bin  composer  zendframework  ...  autoload.php  composer.json  composer.lock
  25. 25. Ralf EggertRalf Eggert 2525 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Aufbau des App Moduls  module  App  src  Action  HomePageAction.php  HomePageFactory.php  PingAction.php  ConfigProvider.php  templates  app  home-page.phtml  error  404.phtml  error.phtml  layout  default.phtml
  26. 26. Teil 3Teil 3 AnwendungsmoduleAnwendungsmodule
  27. 27. Ralf EggertRalf Eggert 2727 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop User Stories Kundenverwaltung Story #0002 As an admin I want to show a single customers So that I can see all data of a registered customer Story #0001 As an admin I want to list all customers So that I have an overview of all registered customers Story #0003 As an admin I want to create a new customer So that I can add customers without registration Story #0005 As an admin I want to delete a customer So that I can remove the customer data from the database Story #0004 As an admin I want to update a customer So that I can change the details of a customer in the database Story #0006 As a - I want - So that -
  28. 28. Ralf EggertRalf Eggert 2828 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Schichtenmodell für Anwendung Repository DatenbankAction Presentation Layer Domain Layer Infrastructure LayerApplication Layer Formular
  29. 29. Ralf EggertRalf Eggert 2929 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Modularität I Modul Customer Actions Konfiguration Templates Formulare Repositories Entitäten Storages Services Routing Input-Filter View-Helper Paginierung Navigation
  30. 30. Ralf EggertRalf Eggert 3030 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Modularität II Modul CustomerApp Modul CustomerDomain Action Konfiguration Templates Formulare Konfiguration Repository Entitäten Storage Services Routing Input-Filter View-Helper Paginierung Navigation
  31. 31. Ralf EggertRalf Eggert 3131 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Modularität III Modul Customer MwApp Modul Customer Domain Modul Customer Presentation Modul Customer Console Modul Customer Rest Modul Customer MvcApp
  32. 32. Ralf EggertRalf Eggert 3232 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Modularität IV Modul Customer MwApp Modul Customer Domain Modul Customer Presentation Modul Customer Console Modul Customer Rest Modul Customer MvcApp
  33. 33. FrageFrage Welche Module für Kundenverwaltung notwendig?Welche Module für Kundenverwaltung notwendig?
  34. 34. Live CodingLive Coding Module für Kundenverwaltung einrichtenModule für Kundenverwaltung einrichten
  35. 35. DiskussionDiskussion ModuleinrichtungModuleinrichtung
  36. 36. Teil 4Teil 4 Middleware-AktionenMiddleware-Aktionen
  37. 37. Ralf EggertRalf Eggert 3737 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Einfacher Domain-Layer RepositoryAktion Domain Layer Infrastructure LayerApplication Layer PHP Array Factory
  38. 38. Live CodingLive Coding Repository implementierenRepository implementieren
  39. 39. DiskussionDiskussion RepositoryRepository
  40. 40. Ralf EggertRalf Eggert 4040 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Routing Middleware-Aktionen Aktion Application LayerPresentation Layer Template Factory Repository Domain Layer
  41. 41. FrageFrage Welche lesenden Middleware-Aktionen notwendig?Welche lesenden Middleware-Aktionen notwendig?
  42. 42. Live CodingLive Coding Lesende Middleware-Aktionen implementierenLesende Middleware-Aktionen implementieren
  43. 43. DiskussionDiskussion RepositoryRepository
  44. 44. FrageFrage Welches Problem birgt die Anwendungsstruktur?Welches Problem birgt die Anwendungsstruktur?
  45. 45. Live CodingLive Coding Modulare Struktur verbessernModulare Struktur verbessern
  46. 46. DiskussionDiskussion Delegator FactoriesDelegator Factories
  47. 47. Teil 5Teil 5 DatenbankanbindungDatenbankanbindung
  48. 48. FrageFrage Wie Datenbank ansprechen?Wie Datenbank ansprechen?
  49. 49. Ralf EggertRalf Eggert 4949 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Erweiterter Domain-Layer RepositoryAktion Domain Layer Infrastructure LayerApplication Layer Factory Storage Factory Table Gateway
  50. 50. Ralf EggertRalf Eggert 5050 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop ZendDb installieren
  51. 51. Ralf EggertRalf Eggert 5151 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Datenbank Dump einspielen
  52. 52. Live CodingLive Coding Storage implementierenStorage implementieren
  53. 53. DiskussionDiskussion Storage und RepositoryStorage und Repository
  54. 54. Live CodingLive Coding Schreibende Methoden implementierenSchreibende Methoden implementieren
  55. 55. DiskussionDiskussion Schreibende MethodenSchreibende Methoden
  56. 56. Teil 6Teil 6 Formulare und FormularverarbeitungFormulare und Formularverarbeitung
  57. 57. Ralf EggertRalf Eggert 5757 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Routing Middleware-Aktion Aktion Application LayerPresentation Layer Template Factory Repository Domain Layer Formular
  58. 58. Ralf EggertRalf Eggert 5858 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop ZendForm installieren
  59. 59. Live CodingLive Coding Formular implementierenFormular implementieren
  60. 60. DiskussionDiskussion FormulareFormulare
  61. 61. Ralf EggertRalf Eggert 6161 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Formularverarbeitung Form Aktion Application LayerPresentation Layer Template Repository Domain Layer Formular Handle Aktion
  62. 62. Live CodingLive Coding Formularverarbeitung implementierenFormularverarbeitung implementieren
  63. 63. DiskussionDiskussion FormularverarbeitungFormularverarbeitung
  64. 64. Ralf EggertRalf Eggert 6464 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Eingabevalidierung Form Aktion Application LayerPresentation Layer Template Repository Domain Layer Formular Handle Aktion Input Filter
  65. 65. Live CodingLive Coding Formularvalidierung implementierenFormularvalidierung implementieren
  66. 66. DiskussionDiskussion FormularvalidierungFormularvalidierung
  67. 67. Teil 7Teil 7 ZusammenfassungZusammenfassung
  68. 68. Ralf EggertRalf Eggert 6868 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Implementierte Bestandteile Module Konfiguration Formulare Repository Storage Routing Actions Templates Input Filter
  69. 69. FrageFrage Welche Bestandteile einer Anwendung fehlen?Welche Bestandteile einer Anwendung fehlen?
  70. 70. Ralf EggertRalf Eggert 7070 vonvon 7272 ZendExpressive WorkshopZendExpressive Workshop Fehlende Bestandteile (Auswahl) Entitäten Hydratoren Middleware Pipeline Authenti- fizierung Autori- sierung View Helper Filter Validator Externe Packages
  71. 71. DiskussionDiskussion Abschlussdiskussion und weitere FragenAbschlussdiskussion und weitere Fragen
  72. 72. Danke!Danke! Fragen an ralf@travello.deFragen an ralf@travello.de

×