Ralf Eggert Travello GmbH

Die neue Komponente ZendExpressive bereichert das Zend Framework um eine zusätzliche, leichtgewichtige und performantere Variante zum Aufbau Ihrer Webanwendungen.

PSR-7? Middleware? Zend\Expressive? Verstehen Sie nur Bahnhof? Wir haben also einiges vor in diesem Artikel … am Ende jedenfalls werden wir leichtgewichtige in kürzester Zeit Webanwendungen mit dem neuen PSR-7-Middleware-Microframework aufbauen.

Zend\Expressive ist das neue Zugpferd am Zend-Framework-Himmel. Das „PSR-7-Middleware-Microframework“ verspricht den Aufbau von leichtgewichtigen Webanwendungen innerhalb weniger Minuten. Dieser Artikel wagt einen genaueren Blick auf die Möglichkeiten von Zend\Expressive und betrachtet auch den Aufbau von komplexeren Middleware-Anwendungen. Zudem wird die Frage erläutert, ob die Tage des MVC-basierten Zend Frameworks nun gezählt sind. Zunächst beschäftigen wir uns aber mit den Grundlagen.

Was bedeutet PSR-7?

Die „PHP Framework Interop Group“ (PHP FIG) hat sich das Ziel gesetzt, Empfehlungen für gemeinsame Standards in der PHP-Welt zu schaffen. Mitglieder der PHP FIG sind unter anderem Vertreter verschiedener PHP-Frameworks wie Aura, CakePHP, Flow, Laravel, Symfony und Zend Framework, von Tools wie Composer, Doctrine oder Phing sowie von Open-Source-Projekten wie Joomla!, Neos, SugarCRM oder Drupal.

Die Standardempfehlungen der PHP FIG werden idealerweise von möglichst vielen Mitgliedern und Nichtmitgliedern unterstützt. Die Implementierung der Standards funktioniert auf freiwilliger Basis, sodass niemand – nicht mal die Mitglieder der PHP FIG – verpflichtet sind, alle Standards in allen Details umzusetzen. Bekannt und bereits weit verbreitet sind die Autoloading-Standards PSR-0 und PSR-4 sowie die Empfehlungen für Code Styles, PSR-1 und PSR-2. Weitere Empfehlungen für Standards sind in Vorbereitung.

Eine relativ junge Standardempfehlung ist der PSR-7-Standard, der im Mai 2015 akzeptiert worden ist. In diesem Dokument werden eine Reihe von Interfaces zur Darstellung von HTTP-Nachrichten, URIs, Server-Requests und Dateiuploads definiert. Vereinfacht gesagt, vereinheitlicht PSR-7 den Zugriff auf HTTP-Nachrichten auf PHP-Ebene. HTTP-Nachrichten (Requests und Responses) bilden das Gerüst der Webentwicklung (Abb. 1). HTTP-Clients wie Webbrowser oder Tools wie cURL und wget, aber auch die von JavaScript unterstützten XMLHttpRequest generieren HTTP-Requests und versenden diese an den Webserver. Der Webserver wiederum sendet an den Client zurück.

Abb. 1: Grundgerüst der Webentwicklung

Abb. 1: Grundgerüst der Webentwicklung

HTTP-Requests und -Responses sind seit langem standardisiert. In der Vergangenheit hat jedoch nahezu jedes PHP-Framework oder CMS eine eigene PHP-Implementierung zur Darstellung von HTTP-Nachrichten verwendet, was. die übergreifende Kommunikation zwischen PHP-Frameworks stark erschwert hat. Durch PSR-7 wird dieser Austausch in Zukunft für alle Projekte vereinfacht, die dieser Empfehlung unterstützen.

Die Zend-Framework-Komponente Zend\Diactoros implementiert die Interfaces, die vom PSR-7-Standard definiert werden. Der Begriff „Diactoros“ stammt aus dem Griechischen und ist ein Schimpfname für den griechischen Gott Hermes; im übertragenen Sinne bedeutet er „der Bote“. Diese Komponente stellt Implementierungen aller Interfaces bereit, die im PSR-7-Standard definiert sind. Dies beinhaltet konkrete Implementierungen für Client-Requests und -Responses, für Server-Requests, Streams, URIs und hochgeladene Dateien.

Den vollständigen Artikel lesen Sie in der Ausgabe:

PHP Magazin 4.16 - "Expressive"

Im Titelthema des PHP Magazins 4.2016 beschäftigt sich Ralf Eggert mit dem PSR-7-Middleware-Microframework Zend Expressive.

Alle Infos zum Heft
244272Zend Expressive im Blick
X
- Gib Deinen Standort ein -
- or -