Expressive 3.0.0RC2 released

This week, we’ve worked on backports from Expressive 3 to Expressive 2, and, in
the process, identified a few issues with how the routing package handles
implicit HEAD and OPTIONS requests. As a result, we’ve just released


What are "implicit" HEAD and OPTIONS requests?

Implicit HEAD and OPTIONS requests are requests using those methods made to
routes that do not explicitly define them; in other words, if no routes for a
given path include the HEAD or OPTIONS methods.

We provide a way for router implementations to flag a routing failure as being
due to requesting a method that is not explicitly allowed. We also provide
middleware for providing responses to HEAD and OPTIONS requests under those
conditions, as well as separate middleware for simply reporting that a method is
not allowed.

Getting started with RC2

To start a new project based on 3.0.0rc2, use
Composer to create a new project:

$ composer create-project "zendframework/zend-expressive-skeleton:3.0.0rc2"

If you want to install to a custom directory name, use the following instead:

$ composer create-project zendframework/zend-expressive-skeleton {your directory} 3.0.0rc2

Once installed, you can follow the same instructions as for RC1.

Updating from RC1

Updating from RC1 requires a few manual steps.

Prior to upgrading, you will need to do the following:

$ composer require "zendframework/zend-diactoros:^1.7.1"

Then run:

$ composer update

Once done, you will need to make one change to your config/pipeline.php.

Locate the following line:


Cut the line, and paste it following the line reading:


This change is necessary due to how each of these middleware inspect the routing
result and act on it. If MethodNotAllowedMiddleware operates before the
Implicit*Middleware, it will detect a 405 condition. Moving it after those
middleware allow them to intercept for HEAD and OPTIONS requests.


We still have a number of tasks to accomplish before the stable 3.0.0 release.
In particular:

  • We need to provide full documentation for the v3 release.

  • We will be issuing a 2.2 release with:

    • Deprecations, based on the v3 changes.
    • Backports of select v3 changes in order to aid migration.
    • See the following for full details:
  • We need to document migration from v2.2 to v3, and potentially provide
    automated tooling.

  • We anticipate users may still find bugs in the RC, and will be actively
    incorporating bugfixes before the stable release.

Our target date is still 15 March 2018, but we need your help! Help by testing
the RC2 skeleton and providing your feedback. As we prepare the v2.2 release,
help by testing tooling and applying our migration documentation to your
applications, and let us know what works and what doesn’t. If you find features
that are not documented, let us know by filing issues or asking questions in
our Slack.

We look forward to the stable release, and the positive impact PSR-15 will have
on the PHP ecosystem!

Source: Zend feed