Zend Expressive: A Quick Tour

Ian Littman (@iansltx)

AustinPHP October 2016


What is it?

  • Microframework-ish (includes views)
  • PSR-7 compliant (via Zend Diactoros)
  • Middlewares (via Zend Stratigility)
  • Mix and match components for...
    • Router
    • DI
    • Views
    • Error Handling
  • Installer includes the mix-and-match
  • Can use array-heavy or programmatic config

Go Ahead, Be Distracted


  • FastRoute
  • Zend Router
  • Aura.Router
  • Route params available via $request->getAttribute()


Configuration options may very depending on library

  • :id (Zend) vs. {id} (FastRoute) for routing
  • Dependency injection setup (there's a shim for Pimple)

DI Containers

  • Zend ServiceManager
  • Aura.Di
  • Pimple (via Container Interop bridge)
  • Standard setup uses heavily array-based configuration
  • Setup happens in config/container.php


You can use another container. The app expects something that works with Container Interop. If you supply that with the proper dependencies, you're good to go. It just won't show up in the installer.


  • Plates
  • Twig
  • Zend View (requires Zend ServiceManager)
  • ...or none
  • Uses TemplateRenderInterface


Views render templates. They don't create or munge responses, though they can return a StreamInterface (the built in ones don't).

ERror Handling

  • Whoops (dev only, optional)
  • TemplatedErrorHandler interface

Actions & Middlewares

  • Can define via...
    • Config (nested arrays)
    • Methods off of app object (similar to Slim etc.)
  • Actions are middlewares (no special signature)
  • May switch to PSR-15 syntax in the future

Demo Time!


Zend Expressive - AustinPHP October 2016

By Ian Littman

Zend Expressive - AustinPHP October 2016

  • 893
Loading comments...

More from Ian Littman