Changelog History
Page 2
-
v2.1.2 Changes
October 12, 2017โ Added
- Nothing.
๐ Changed
- Nothing.
๐ Deprecated
- Nothing.
โ Removed
- Nothing.
๐ Fixed
- โก๏ธ #119 updates to
webimpress/http-middleware-compatibility
^0.1.3
. This was done to ensure backwards compatibilty by injecting the projectcomposer.json
with the currently installed version of http-interop/http-middleware, and in cases where that package is not yet installed, prompting the user to install it. This approach provides a tiered migration path to http-middleware 0.5.0 for users.
-
v2.1.1 Changes
October 10, 2017โ Added
- Nothing.
๐ Changed
- Nothing.
๐ Deprecated
- Nothing.
โ Removed
- Nothing.
๐ Fixed
- ๐ #118 fixes how
the
MiddlewarePipe
detects if the second parameter of callable middleware is a delegate/request handler when choosing whether or not to decorate it to ensure that it will properly decorate it when used with http-interop/http-middleware 0.5.0
-
v2.1.0 Changes
October 09, 2017โ Added
#112 adds support for http-interop/http-middleware 0.5.0 via a polyfill provided by the package webimpress/http-middleware-compatibility. Essentially, this means you can drop this package into an application targeting either the 0.4.1 or 0.5.0 versions of http-middleware, and it will "just work".
โ Adds support for PHP 7.2.
๐ Changed
- Nothing.
๐ Deprecated
- Nothing.
โ Removed
โ Removes support for HHVM.
๐ #107 removes the unused
$raiseThrowables
property fromZend\Stratigility\Next
.
๐ Fixed
- Nothing.
-
v2.0.1 Changes
January 25, 2017โ Added
- Nothing.
๐ Deprecated
- Nothing.
โ Removed
- Nothing.
๐ Fixed
- ๐ #98 fixes how
Middleware::pipe()
handlesMiddlewarePipe
instances passed to it; previously it was incorrectly wrapping them inCallableMiddlewareWrapper
instances; it now pipes them as-is.
-
v2.0.0 Changes
January 24, 2017โ Added
- Nothing.
๐ Changed
#96 changes the minimum supported http-interop/http-middleware version to 0.4.1. This impacts several things:
- Middleware that implemented the http-interop/http-middleware 0.2.0 interfaces will no longer work with Stratigility. In most cases, these can be updated by changing import statements. As an example:
// http-middleware 0.2.0: use Interop\Http\Middleware\DelegateInterface; use Interop\Http\Middleware\ServerMiddlewareInterface; // Becomes the following under 0.4.1: use Interop\Http\ServerMiddleware\DelegateInterface; use Interop\Http\ServerMiddleware\MiddlewareInterface as ServerMiddlewareInterface;
- The various classes under
Zend\Stratigility\Middleware
now implement the new interfaces, which could affect extending classes. Zend\Stratigility\Next
andZend\Stratigility\Delegate\CallableDelegateDecorator
have signature changes due to changes in theDelegateInterface
; again, these changes should only affect those extending the classes.Interop\Http\Middleware\MiddlewareInterface
(which was intended for implementation by client-side middleware) no longer exists, which means it is also no longer supported within Stratigility.
โก๏ธ #67 updates each of
Zend\Stratigility\MiddlewarePipe
,Zend\Stratigility\Middleware\ErrorHandler
, andZend\Stratigility\Middleware\NotFoundHandler
to require all arguments (none are optional).#67 modifies the internals of
Zend\Stratigility\MiddlewarePipe
's__invoke()
method.- When instantiating the
Next
instance, it now captures it in a variable named$layer
. - If the result of
Next
is not a response instance, the response passed during invocation is promoted as the layer response. - The response is then passed to the
$next
argument provided at invocation, and the result of that returned without verification.
- When instantiating the
In most cases, this should have no impact on your application.
#71 modifies
Zend\Stratigility\MiddlewarePipe
such that it no longer decorates the request and response provided at invocation with theZend\Stratigility\Http\*
variants, as these have been removed.โก๏ธ #76 updates
MiddlewarePipe
to implement only the http-interop/http-middleware server-side middleware interface, and not the Stratigility-specificMiddlewareInterface
(which was removed).โก๏ธ #76 updates
Zend\Stratigility\Middleware\ErrorHandler
to implement the http-interop/http-middleware server-side middleware interface instead of the Stratigility-specificMiddlewareInterface
(which was removed).โก๏ธ #76 updates
Zend\Stratigility\Middleware\NotFoundHandler
to implement the http-interop/http-middleware server-side middleware interface instead of the Stratigility-specificMiddlewareInterface
(which was removed).โก๏ธ #76 updates
MiddlewarePipe::__invoke()
to require a third argument, now named$delegate
, and no longer type-hinted. If a callable not implementing http-interop/http-middlewareDelegateInterface
is provided, it is wrapped in theCallableDelegateDecorator
(introduced in 1.3.0). The method then calls its ownprocess()
method with the request and delegate. This method should typically only be used as an entry point for an application.โก๏ธ #76 updates
MiddlewarePipe::pipe()
to raise an exception if callable middleware using the legacy double-pass signature is provided, but no response prototype is composed in theMiddlewarePipe
instance yet.โก๏ธ #76 updates the constructor of
Next
to rename the$done
argument to$nextDelegate
and typehint it against the http-interop/http-middlewareDelegateInterface
.โก๏ธ #76 updates
Next::__invoke()
to remove all arguments except the$request
argument; the method now proxies to the instanceprocess()
method.โก๏ธ #76 updates
Next
to no longer compose aDispatch
instance; it is now capable of dispatching on its own.โก๏ธ #76 updates the
Zend\Stratigility\Route
constructor to raise an exception if non-http-interop middleware is provided as the route handler.โก๏ธ #79 updates the
raiseThrowables()
method of each ofMiddlewarePipe
andNext
to be no-ops.
๐ Deprecated
- ๐ #79 deprecates
the
raiseThrowables()
method of each ofMiddlewarePipe
andNext
.
โ Removed
๐
Zend\Stratigility\Exception\MiddlewareException
was removed as it is no longer thrown.๐ #67 removes
Zend\Stratigility\FinalHandler
. UseZend\Stratigility\NoopFinalHandler
instead, along withZend\Stratigility\Middleware\ErrorHandler
andZend\Stratigility\Middleware\NotFoundHandler
(or equivalents).๐ #67 removes
Zend\Stratigility\ErrorMiddlewareInterface
. Register middleware, such asZend\Stratigility\Middleware\ErrorHandler
, in outer layers of your application to handle errors.๐ #67 removes
Zend\Stratigility\Dispatch
. This was an internal detail of theNext
implementation, and should not affect most applications.๐ #67 removes
Zend\Stratigility\Utils::getArity()
. This was used only inDispatch
; since middleware signatures no longer vary, it is no longer necessary.๐ #67 removes the final, optional
$err
argument toZend\Stratigility\Next()
; raise exceptions instead, and provide error handling middleware such asZend\Stratigility\Middleware\ErrorHandler
instead.๐ #67 removes the
$done
argument to theZend\Stratigility\Next
constructor.๐ #71 removes the
Zend\Stratigility\Http\Request
class.๐ #71 removes the
Zend\Stratigility\Http\Response
class.๐ #71 removes
Zend\Stratigility\Http\ResponseInterface
.๐ #76 removes
Zend\Stratigility\MiddlewareInterface
andZend\Stratigility\ErrorMiddlewareInterface
. The latter is removed entirely, while the former is essentially replaced by http-interop'sServerMiddlewareInterface
. You may still write callable middleware using the legacy double-pass signature, however.๐ #76 removes the
Zend\Stratigility\Dispatch
class. The class was an internal detail ofNext
, and no longer required.
๐ Fixed
- Nothing.
-
v1.3.3 Changes
January 23, 2017โ Added
- Nothing.
๐ Deprecated
- Nothing.
โ Removed
- Nothing.
๐ Fixed
- ๐ #86 fixes the links to documentation in several exception messages to ensure they will be useful to developers.
-
v1.3.2 Changes
January 05, 2017โ Added
- Nothing.
๐ Deprecated
- Nothing.
โ Removed
- Nothing.
๐ Fixed
- ๐ #95 fixes an
issue with how the
$err
is dealt with. Specifically, if an error arises, then subsequent middlewares should be dispatched as callables. Without this fix, stratigility would simply continue dispatching middlewares, ignoring the failing ones.
-
v1.3.1 Changes
November 10, 2016โ Added
- Nothing.
๐ Deprecated
- Nothing.
โ Removed
- Nothing.
๐ Fixed
- ๐ #85 fixes an
issue with how the
$done
or$nextDelegate
is invoked byNext
when an error is present. Previously, the class was detecting aNext
instance as an http-interopDelegateInterface
instance and dropping the error; this would then mean if the instance contained error middleware, it would never be dispatched.
-
v1.3.0 Changes
November 10, 2016โ Added
#66 adds a new class,
Zend\Stratigility\Middleware\NotFoundHandler
. This class may be piped into an application at an innermost layer; when invoked, it will return a 404 plain text response.#66 adds a new class,
Zend\Stratigility\Middleware\ErrorHandler
. This class may be piped into an application, typically at the outermost or one of the outermost layers. When invoked, it does the following:- Creates a PHP error handler that will re-throw PHP errors as
ErrorExceptions
. - Dispatches to the next layer.
- If the next layer does not return a response, it raises a new
MissingResponseException
. - Catches all exceptions from calling the next layer, and passes them to an error response generator to return an error response.
- Creates a PHP error handler that will re-throw PHP errors as
A default error response generator is provided, which will return a 5XX series response in plain text. You may provide a callable generator to the constructor in order to customize the response generated; please refer to the documentation for details.
#66 adds a new class,
Zend\Stratigility\NoopFinalHandler
. This class may be provided as the$out
argument to aMiddlewarePipe
, or as the final handler toZend\Diactoros\Server::listen()
(in which case it will be passed to the middleware you invoke as the application). This handler returns the response provided to it verbatim.#70 adds a new class,
Zend\Stratigility\Middleware\OriginalMessages
. Compose this middleware in an outermost layer, and it will inject the following attributes in the request passed to nested layers:originalRequest
, representing the request provided to it.originalResponse
, representing the response provided to it.originalUri
, representing URI instance composed in the request provided to it.
๐ #75 adds support for http-interop middleware 0.2.0. For full details, see the migration guide. As a summary of features:
- You may now pipe http-interop middleware to
MiddlewarePipe
instances. - You may now pipe callable middleware that defines the same signature as
http-interop middleware to
MiddlewarePipe
instances; these will be decorated in aZend\Stratigility\Middleware\CallableInteropMiddlewareWrapper
instance. MiddlewarePipe
now implements the http-interopServerMiddlewareInterface
, allowing it to be used in http-interop middleware dispatchers.
- You may now pipe http-interop middleware to
#75 adds the class
Zend\Stratigility\Middleware\CallableMiddlewareWrapper
. It accepts callable double-pass middleware and a response prototype, and implements the http-interopServerMiddlewareInterface
, allowing you to adapt existing callable middleware to work with http-interop middleware dispatchers.#75 adds the class
Zend\Stratigility\Middleware\CallableInteropMiddlewareWrapper
. It accepts callable middleware that follows the http-interopServerMiddlewareInterface
, and implements that interface itself, to allow composing such middleware in http-interop middleware dispatchers.#75 adds the class
Zend\Stratigility\Delegate\CallableDelegateDecorator
, which can be used to add http-interop middleware support to your existing callable middleware.#75 adds a new method to
MiddlewarePipe
,setResponseProtoype()
. When this method is invoked with a PSR-7 response, the following occurs:- That response is injected in
Next
andDispatch
instances, to allow dispatching legacy callable middleware as if it were http-interop middleware. - Any callable middleware implementing the legacy signature will now be
decorated using the above
CallableMiddlewareWrapper
in order to adapt it as http-interop middleware.
- That response is injected in
#78 adds a new method to each of
Zend\Stratigility\MiddlewarePipe
,Next
, andDispatch
:raiseThrowables()
. When called,Dispatch
will no longer wrap dispatch of middleware in a try/catch block, allowing throwables/exceptions to bubble out. This enables the ability to create error handling middleware as an outer layer or your application instead of relying on error middleware and/or the final handler. Typical usage will be to call the method on theMiddlewarePipe
before dispatching it.
๐ Changed
#70 makes the following changes to
Zend\Stratigility\FinalHandler
:- It now pulls the original request using the
originalRequest
attribute, instead ofgetOriginalRequest()
; see the deprecation ofZend\Stratigility\Http\Request
, below, for why this works. - It no longer writes to the response using the
Zend\Stratigility\Http\Response
-specificwrite()
method, but rather pulls the message body and writes to that.
- It now pulls the original request using the
โก๏ธ #75 updates
MiddlewarePipe
to inject the$response
argument to__invoke()
as the response prototype.โก๏ธ #75 updates
Zend\Stratigility\Next
to implement the http-interop middlewareDelegateInterface
. It also updatesZend\Stratigility\Dispatch
to add a new method,process()
, following theDelegateInterface
signature, thus allowingNext
to properly process http-interop middleware. These methods will use the composed response prototype, if present, to invoke callable middleware using the legacy signature.โก๏ธ #75 updates
Next
to allow the$done
constructor argument to be an http-interopDelegateInterface
, and will invoke it as such if the queue is exhausted.โก๏ธ #75 updates
Route
(which is used internally byMiddlewarePipe
to allow either callable or http-interop middleware as route handlers.
๐ Deprecated
๐ #66 deprecates the
Zend\Stratigility\FinalHandler
class. We now recommend using theNoopFinalHandler
, along with theErrorHandler
andNotFoundHandler
middleware (or equivalents) to provide a more fine-grained, flexible, error handling solution for your applications.๐ #66 deprecates the
Zend\Stratigility\Dispatch
class. This class is used internally byNext
, and deprecation should not affect the majority of users.๐ #66 deprecates
Zend\Stratigility\ErrorMiddlewareInterface
. We recommend instead using exceptions, along with theErrorHandler
, to provide error handling for your application.โก๏ธ #66 updates
Zend\Stratigility\MiddlewarePipe::__invoke()
to emit a deprecation notice if no$out
argument is provided, as version 2 will require it.โก๏ธ #66 updates
Zend\Stratigility\Next::__invoke()
to emit a deprecation notice if a non-null$err
argument is provided; middleware should raise an exception, instead of invoking middleware implementingErrorMiddlewareInterface
.๐ #70 deprecates
Zend\Stratigility\Http\Request
. Additionally:- The composed "PSR Request" is now injected with an additional attribute,
originalRequest
, allowing retrieval using standard PSR-7 attribute access. - The methods
getCurrentRequest()
andgetOriginalRequest()
now emit deprecation notices when invoked, urging users to update their code.
- The composed "PSR Request" is now injected with an additional attribute,
๐ #70 deprecates
Zend\Stratigility\Http\ResponseInterface
.๐ #70 deprecates
Zend\Stratigility\Http\Response
. Additionally, the methodswrite()
,end()
,isComplete()
, andgetOriginalResponse()
now emit deprecation notices when invoked, urging users to update their code.๐ #75 deprecates the
$response
argument in existing callable middleware. Please only operate on the response returned by$next
/$delegate
, or create a response. See the documentation section on response arguments for more details.๐ #75 deprecates usage of error middleware, and thus deprecates the
$err
argument to$next
; explicitly invoking error middleware using that argument to$next
will now raise a deprecation notice.
โ Removed
- Nothing.
๐ Fixed
- Nothing.
-
v1.2.1 Changes
March 24, 2016โ Added
- Nothing.
๐ Deprecated
- Nothing.
โ Removed
- Nothing.
๐ Fixed
- ๐ #52 fixes the
behavior of the
FinalHandler
with regards to exception handling, ensuring that the reason phrase reported corresponds to the HTTP status code used. - #54 modifies the
behavior of the
FinalHandler
when creating an error or 404 response to callwrite()
instead ofend()
on the response object. This fixes a lingering issue with emitting theContent-Length
header from theSapiEmitter
, as well as prevents theSapiEmitter
from raising exceptions when doing so (which was happening starting with 1.2.0).