league/tactician
A small, flexible command bus. Handy for building service layers.
v1.2.0
16M downloads/mo
#1746 most downloaded on Packagist
thephpleague/tactician
What this package is like to depend on
Last release 8 months ago
21 Dec 2025
Ships unpredictably
gaps range from 5 weeks to 4.9 years
Most releases are documented
notes for 8 of 12 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
12 releases · first in 2015
1 release in the last 12 months
see the full history below
Release timeline
12 releases · Feb 2015 to Dec 2025Releases
latest 12-
v1.2.021 Dec 2025Nothing published for this version
-
v1.1.014 Feb 2021Nothing published for this version
-
v1.0.330 Nov 2017 -
v1.0.220 Feb 2016Release notes
Open source → -
v1.0.119 Feb 2016Release notes
Open source →BC Breaks:
- None
New features:
- #96: More detailed error message when accidentally passing a non-object into the command bus (array, callable, string, etc).
-
v0.6.102 Aug 2015Release notes
Open source →BC Breaks:
- None
New features:
- A CallableLocator added, allowing you to retrieve a handler from a single callable. Hopefully this can be used as an alternative to creating all the different Container plugins.
- Officially support PHP7 now
Bug fixes:
-
v0.6.008 May 2015 -
v0.5.004 Apr 2015Release notes
Open source →tl;dr CommandHandlerMiddleware now requires an extra first parameter, you just need to pass an instance of
ClassNameExtractorto it.BC breaks: Previously, the
HandlerLocatorinterface was responsible for both mapping a Command to a string name AND looking up that string name in some sort of DI container or locator. That worked alright but made it difficult to use custom naming strategies with different DI containers. Therefore, we've made the following two changes:- A new interface,
CommandNameExtractoris responsible for mapping a Command to a string name. HandlerLocator::getHandlerForCommand()now accepts a string name instead of a Command object as its only parameter.- The
CommandHandlerMiddlewarenow requires aCommandNameExtractoras its first parameter. To continue using the same behavior you've had until now, you only need to pass in an instance ofClassNameExtractor
New features:
- A new MethodNameInflector is included with core,
HandleClassNameWithoutSuffix. Since many users suffix their command class names with-Command, this allows you to have Handler methods based on the class name but without that Suffix. In other words, the command classRentMovieCommandwould be mapped to the methodhandleRentMovie.
Bug fixes:
- Several docblocks have been corrected or improved.
- A new interface,
-
v0.4.030 Mar 2015Release notes
Open source →BC breaks:
- Removed the
League\Tactician\Commandinterface. Now any plain ol' PHP object can be a command! See #43 and #45.
New features:
- None
Bug fixes:
- None
- Removed the
-
v0.3.012 Feb 2015 -
2.0-rc128 Jul 2019Nothing published for this version
-
1.031 Dec 2015Nothing published for this version