None
- Added
HandlerProviderWithChain
, which allows chaining multiple handler providers. They are queried in turn until a handler is found. - Handlers, Permissions, and Voters can now be defined using PHP 8 attributes instead of YAML. Added
MessageBusPassWithAttributes
, and the attributesHandler
,Permission
, andVote
.
HandlerProvider::getHandlerForMessage()
can now returnnull
, undefined handlers are handled in one single location now, that isDispatcherWithHandlerProvider
.- Dropped
HandlerProviderPass
,CommandDispatcher
,CommandHandlerProvider
,CommandHandlerProviderPass
,QueryDispatcher
,QueryHandlerProvider
,QueryHandlerProviderPass
in favor ofMessageBusPass
. - Dropped
ContainerHandlerProvider
in favor ofHandlerProviderWithContainer
. - Dropped
AssertingDispatcher
in favor ofRestrictedDispatcher
. - Dropped
SimpleHandlerProvider
in favor ofHandlerProviderWithHandlers
. - Dropped
SimpleDispatcher
in favor ofDispatcherWithHandlerProvider
. - Dropped
NotFound
in favor ofHandlerNotFound
.
None
None
None
- Add support for permissions and voters.
- Add
MessageBusPass
that takes care of handlers, commands, permissions, and voters. This time around the compiler pass generates parameters instead of fulfilled services, offering more flexibility in how they are used. UnlikeHandlerProviderPass
,MessageBusPass
uses the tagmessage_bus.handler
instead ofmessage_dispatcher.handler
. - Add a
services.yaml
sample file, that can be used as is with Symfony's DIC. - Add
Safe
, a way to identify safe messages. - Add
DispatcherWithHandlerProvider
, a replacement forSimpleDispatcher
. - Add
HandlerProviderWithContainer
, a replacement forContainerHandlerProvider
. - Add
HandlerProviderWithHandlers
, a replacement forSimpleHandlerProvider
. - Add
HandlerNotFound
, a replacement forNotFound
.
None
- Deprecate
HandlerProviderPass
,CommandDispatcher
,CommandHandlerProvider
,CommandHandlerProviderPass
,QueryDispatcher
,QueryHandlerProvider
,QueryHandlerProviderPass
in favor ofMessageBusPass
. - Deprecate
AssertingDispatcher
in favor ofRestrictedDispatcher
. - Deprecate
SimpleDispatcher
in favor ofDispatcherWithHandlerProvider
. - Deprecate
SimpleHandlerProvider
in favor ofHandlerProviderWithHandlers
. - Deprecate
ContainerHandlerProvider
in favor ofHandlerProviderWithContainer
. - Deprecate
NotFound
in favor ofHandlerNotFound
.
None
- Require PHP 8.0+
- Compatible with psr/container 1.0 and 2.0
- Compatible with Symfony 6.0
None
None
None
None
The biggest change in this release is the signature of the HandlerProvider
interface. If you
implemented this interface, you'll have to change __invoke(object $message)
to
getHandlerForMessage(object $message): callable
. The change was inspired by [PSR-14][] and its
ListenerProviderInterface
interface.
The exception NoHandlerForMessage
was renamed as NotFound
, if you were catching that exception,
you'll have to update.
Other changes are mostly under the hood and shouldn't be noticed.
None
- Added
HandlerProviderPass::DEFAULT_PROVIDER_CLASS
.
- Changed
HandlerProvider::__invoke(object $message)
togetHandlerForMessage(object $message): callable
. ContainerHandlerProvider
expects container first, mapping second.ContainerHandlerProvider
not longer extendsSimpleHandlerProvider
.- Renamed
HandlerProviderPass::DEFAULT_QUERY_PROPERTY
asDEFAULT_MESSAGE_PROPERTY
. - Reworked
NoHandlerForMessage
and renamed asNotFound
. - Removed
Handler
interface.
None
- Simplified
CommandHandlerProviderPass
andQueryHandlerProviderPass
. - Simplified
SimpleDispatcher
. Exception
extendsThrowable
.