ADDED:
- Explicit support for PSR-7 2.0
CHANGED:
- Increased minimum PHP version requirement to 8.2
- Updated dependencies
REMOVED:
DEPRECATED:
FIXED:
FIXED:
- #34: Direct return of response by middleware seems not possible when using a condition
ADDED:
- Support for PSR-11 v2.0
CHANGED:
- Increased minimum PHP version requirement to 8.0
- Increased minimum PSR-11 version requirement to v1.1
REMOVED:
- Deprecated
HttpHandlerRunnerMiddleware
CHANGED:
- Increased minimum PHPUnit version requirement to 9.3
FIXED:
- #28: Fix the composer provide rule
ADDED:
- Support for PHP 8
- Support for PHPUnit 9
FIXED:
- Middleware after a false condition are not run
ADDED:
LaminasEmitterMiddleware
DEPRECATED:
HttpHandlerRunnerMiddleware
because Zend Framework was migrated to Laminas
REMOVED:
Harmony::__invoke()
which was deprecated since Harmony 6.1.0
CHANGED:
- Improved PSR-12 conformance
- Added more property type declarations
CHANGED:
- Updated dev dependencies
- Improved static analysis
CHANGED:
- Increased minimum PHP version requirement to 7.4 as property type declarations were added
DEPRECATED:
Harmony::__invoke()
: useHarmony::run()
instead
FIXED:
- Instead of a fatal error, an exception is thrown when the
FastRouteMiddleware::$fastRoute
property isnull
CHANGED:
- Apply the Woohoo Labs. Coding Standard
ADDED:
- Support for Zend Diactoros 2.0
CHANGED:
- Run tests on PHP 7.3
REMOVED:
DiactorosResponderMiddleware
as it has been deprecated since Harmony 5.1.0 (breaking change)
ADDED:
HttpHandlerRunnerMiddleware
in order to be able to easily use Zend's Http Handler Runner package
CHANGED:
- Deprecated
DiactorosResponderMiddleware
because the default HTTP response emitters were deprecated as of Diactoros v1.8.0. You can useHttpHandlerRunnerMiddleware
instead.
ADDED:
- Support for PSR-15
CHANGED:
- Adapted the PSR-15
MiddlewareInterface
(breaking change) Harmony::__invoke()
accepts no arguments (breaking change)- Condition callables receive the request (
ServerRequestInterface
) as a second parameter - PHPUnit 7 is minimally required to run tests
REMOVED:
HarmonyMiddlewareInterface
(breaking change)Harmony::getResponse()
(breaking change)Harmony::removeMiddleware()
(breaking change)
CHANGED:
- Routing logic was put into
FastRouteMiddleware::routeRequest()
template method
FIXED
- Included Docker image now has PHP 7.1
CHANGED:
- Increased minimum PHP version requirement to 7.1
- Added more type declarations
ADDED:
- Support for PSR-11
CHANGED:
- Better exception message for
DispatcherException
- Tests namespace became
WoohooLabs\Harmony\Tests
REMOVED:
- Support for Container-Interop
FIXED:
DiactorosResponderMiddleware
passes the request and response to the next middleware
ADDED:
- Docker Compose file to run tests more easily
CHANGED:
- Increased minimum PHP version requirement to 7.0
- Fixed stylistic errors in the documentation
ADDED:
- Getters for
MethodNotAllowed
,MiddlewareNotExists
andRouteNotFound
exceptions - Exception message for
MethodNotAllowed
andRouteNotFound
exceptions
ADDED:
- Support for conditional middleware
- Some basic built-in conditions (e.g.:
ExactPathCondition
) - Support for PHPUnit 5.0
CHANGED:
- #8: Use StyleCI for CS checks
- #9: Improved Travis config
- Middleware returning null will throw
MiddlewareWrongReturnType
- Providing an ID for middleware became optional
- Exception names became shorter
- A
MiddlewareNotFound
exception will be thrown when removing a non-existent middleware withHarmony::removeMiddleware()
- Renamed
MiddlewareInterface
toHarmonyMiddlewareInterface
FIXED:
@return
PHPDoc comments for middleware were missingDiactorosResponderMiddleware
usesSapiEmitter
by defaultDiactorosResponderMiddleware
used to be only usable as a final middleware
REMOVED:
- The concept of "final middleware"
- Output buffering middleware
CHANGED:
- #7: Removed unnecessary
terminated
property - Improved tests
CHANGED:
- #5: Return a Response object for all middleware
- Deprecated middleware returning null
- Middleware must return a
ResponseInterface
instance, otherwise an exception will be thrown - Running tests on PHP 5.6 (code style) and PHP 7 (PHPUnit) instead of PHP 5.5 and PHP 5.6
- Improved test coverage
The release contains breaking changes
ADDED:
- Support for multiple final middleware
- Configuration option for
DiactorosResponderMiddleware
to not respond when headers have already been sent - Added middleware to support output buffering
- Example application
CHANGED:
- Final middleware are integrated with the normal ones (breaking change)
FIXED:
- PHP version constraint in composer.json to correctly support PHP 7
ADDED:
- Configuration option to define the request attribute name storing the route handler
CHANGED:
- Simplified router definition of invokable controller classes
- Improved and more extensive documentation
FIXED:
- Made default middleware compatible with other frameworks
FIXED:
- Final middleware could invoke all the remaining middleware
ADDED:
- Added the possibility to set a final middleware which is always executed after the normal ones
CHANGED:
- Middleware interface design is now based on Zend Stratigility
Harmony::__construct()
requires a request and a response dependencyHarmony::addMiddleware()
also needs the ID of the middleware
REMOVED:
Harmony::build()
,Harmony::next()
and ``Harmony::live()`CallbackMiddleware
,InitializerMiddleware
- All dispatchers
CHANGED:
- Improved unit tests coverage
FIXED:
FastRouteMiddleware
now passes correct URI to FastRoute
ADDED:
- Support for PSR-7
- Improved middleware control
- Unit tests
REMOVED:
- Original request and response interfaces
- Serialization capabilities
- Hooks from handler classes
ADDED:
- Support for middleware
CHANGED:
- Workflow is now based on middleware completely
- Removed events and configuration class
ADDED:
- Possibility to define defaults for various request data
CHANGED:
- Renamed project to Harmony
- Renamed the framework's handler method to live()
ADDED:
- Session handling
- Form data handling
CHANGED:
- Handlers don't have to return the response
ADDED:
Request
andResponse
objects got new capabilities
CHANGED:
- Completely reworked serializers and deserializers
Responder
objects were removed,Response
objects became responders too
FIXED:
- Issue with class event listeners
ADDED:
- Event dispatcher
- Routes can be added with
Config::setRoutes()
to enable route caching - Separated serializing and deserializing
CHANGED:
PHPSerializer
became the default serializer implementationPHPDeserializer
became the default deserializer implementation- Removed Discoverers
FIXED:
FastRouter
now works as expected!
ADDED:
- A simple
PhpSerializer
which only supports the JSON format
FIXED:
JmsSerializer
deserializing error- HTTP request errors
CHANGED:
Fastrouter
doesn't need theContainer
as a dependency
CHANGED:
Fastrouter
doesn't need theContainer
as a dependency
- Initial release