PHPackages                             adgoal/tactician - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. adgoal/tactician

ActiveLibrary[CLI &amp; Console](/categories/cli)

adgoal/tactician
================

A small, flexible command bus. Handy for building service layers.

v1.0.3(8y ago)05MITPHPPHP &gt;=5.5

Since Feb 12Pushed 5y agoCompare

[ Source](https://github.com/Adgoal/tactician)[ Packagist](https://packagist.org/packages/adgoal/tactician)[ RSS](/packages/adgoal-tactician/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (3)Versions (12)Used By (0)

Tactician
=========

[](#tactician)

[![Travis CI](https://camo.githubusercontent.com/6f1010d34b292ef68f9a31e045f9c65fc7db8fe35d33210faabac8a682a89316/68747470733a2f2f6170692e7472617669732d63692e6f72672f4164676f616c2f74616374696369616e2e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/Adgoal/tactician)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/e6fcb26571624b45863867f9d40aeac171d726543dd45fd6cd8e487c1b8b4a52/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f4164676f616c2f74616374696369616e2f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/Adgoal/tactician/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/336b5677713d214416840f5bc0d367e75afb85ebab6aa2a1a2e9c02a9120bddc/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f4164676f616c2f74616374696369616e2f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/Adgoal/tactician/?branch=master)[![Build Status](https://camo.githubusercontent.com/ba1b459b1886e67c49ea964fa187c8c641b4166e40991993b59a4ec5a853c458/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f4164676f616c2f74616374696369616e2f6261646765732f6275696c642e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/Adgoal/tactician/build-status/master)[![MIT License](https://camo.githubusercontent.com/074b89bca64d3edc93a1db6c7e3b1636b874540ba91d66367c0e5e354c56d0ea/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e737667)](https://github.com/thephpleague/tactician/blob/master/LICENSE)[![SensioLabsInsight](https://camo.githubusercontent.com/c10184613e6dcc8bf9404fb2e7030dac2ec7afe4d1d6de6a26049931887e43d3/68747470733a2f2f696e73696768742e73656e73696f6c6162732e636f6d2f70726f6a656374732f35343237356137382d626337302d346262332d396163342d3465656537303063366131632f736d616c6c2e706e67)](https://insight.sensiolabs.com/projects/54275a78-bc70-4bb3-9ac4-4eee700c6a1c)

A small, pluggable command bus.

See the [full docs](http://tactician.thephpleague.com) or the examples directory to get started.

Install
-------

[](#install)

Using Composer:

`composer require league/tactician`

Plugins
-------

[](#plugins)

The core Tactician package is small but there are several plugin packages that extend the usefulness of Tactician:

- [Logger](https://github.com/thephpleague/tactician-logger): Adds PSR-3 logging support for receiving, completing or failing commands.
- [Container](http://github.com/thephpleague/tactician-container): Lazy load handlers from any container implementing container-interop.
- [Doctrine](https://github.com/thephpleague/tactician-doctrine): Wraps commands in separate Doctrine ORM transactions.
- [Bernard](https://github.com/thephpleague/tactician-bernard): Allows queuing your commands in the background, using [the Bernard Queuing library](https://github.com/bernardphp/bernard).
- [Command Events](https://github.com/thephpleague/tactician-command-events): Fires events for all major moments in the command life-cycle.
- [Locking](http://tactician.thephpleague.com/plugins/locking-middleware/): Only allows one command to be executed at a time.
- [and many more](https://packagist.org/search/?q=tactician)

Framework Integration
---------------------

[](#framework-integration)

There are a number of framework integration packages for Tactician, [search for Tactician on Packagist](https://packagist.org/search/?q=tactician) for the most up-to-date listings.

Testing
-------

[](#testing)

To run all unit tests, use the locally installed PHPUnit:

```
$ ./vendor/bin/phpunit

```

Security
--------

[](#security)

Tactician has no previous security disclosures and due to the nature of the project is unlikely to. However, if you're concerned you've found a security sensitive issue in Tactician or one of its related projects, please email disclosures \[at\] rosstuck dot com.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 73.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~180 days

Recently: every ~326 days

Total

10

Last Release

2480d ago

Major Versions

v0.6.1 → v1.0.02015-12-31

v1.0.3 → 2.0-rc12019-07-28

PHP version history (2 changes)v0.3.0PHP &gt;=5.5

2.0-rc1PHP &gt;=7.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/f4d59ea4bdf00e8a2b7ac18da994d769a06136ca1cfdf9e17306e235901cac31?d=identicon)[wir\_wolf](/maintainers/wir_wolf)

---

Top Contributors

[![rosstuck](https://avatars.githubusercontent.com/u/146766?v=4)](https://github.com/rosstuck "rosstuck (143 commits)")[![sagikazarmark](https://avatars.githubusercontent.com/u/1226384?v=4)](https://github.com/sagikazarmark "sagikazarmark (13 commits)")[![boekkooi](https://avatars.githubusercontent.com/u/399895?v=4)](https://github.com/boekkooi "boekkooi (8 commits)")[![renan](https://avatars.githubusercontent.com/u/28046?v=4)](https://github.com/renan "renan (6 commits)")[![frankdejonge](https://avatars.githubusercontent.com/u/534693?v=4)](https://github.com/frankdejonge "frankdejonge (4 commits)")[![rtuin](https://avatars.githubusercontent.com/u/360150?v=4)](https://github.com/rtuin "rtuin (3 commits)")[![tomaszhanc](https://avatars.githubusercontent.com/u/7013293?v=4)](https://github.com/tomaszhanc "tomaszhanc (2 commits)")[![localheinz](https://avatars.githubusercontent.com/u/605483?v=4)](https://github.com/localheinz "localheinz (2 commits)")[![MarkRedeman](https://avatars.githubusercontent.com/u/1114829?v=4)](https://github.com/MarkRedeman "MarkRedeman (1 commits)")[![samnela](https://avatars.githubusercontent.com/u/1852108?v=4)](https://github.com/samnela "samnela (1 commits)")[![wirwolf](https://avatars.githubusercontent.com/u/8457572?v=4)](https://github.com/wirwolf "wirwolf (1 commits)")[![WyriHaximus](https://avatars.githubusercontent.com/u/147145?v=4)](https://github.com/WyriHaximus "WyriHaximus (1 commits)")[![yourwebmaker](https://avatars.githubusercontent.com/u/812971?v=4)](https://github.com/yourwebmaker "yourwebmaker (1 commits)")[![acairns](https://avatars.githubusercontent.com/u/705212?v=4)](https://github.com/acairns "acairns (1 commits)")[![ZeljkaBlazek](https://avatars.githubusercontent.com/u/32762399?v=4)](https://github.com/ZeljkaBlazek "ZeljkaBlazek (1 commits)")[![Big-Shark](https://avatars.githubusercontent.com/u/646054?v=4)](https://github.com/Big-Shark "Big-Shark (1 commits)")[![GrahamCampbell](https://avatars.githubusercontent.com/u/2829600?v=4)](https://github.com/GrahamCampbell "GrahamCampbell (1 commits)")[![guiwoda](https://avatars.githubusercontent.com/u/1625545?v=4)](https://github.com/guiwoda "guiwoda (1 commits)")[![hannesvdvreken](https://avatars.githubusercontent.com/u/1410358?v=4)](https://github.com/hannesvdvreken "hannesvdvreken (1 commits)")[![jesseobrien](https://avatars.githubusercontent.com/u/865481?v=4)](https://github.com/jesseobrien "jesseobrien (1 commits)")

---

Tags

commandcommand busservice layer

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/adgoal-tactician/health.svg)

```
[![Health](https://phpackages.com/badges/adgoal-tactician/health.svg)](https://phpackages.com/packages/adgoal-tactician)
```

###  Alternatives

[league/tactician

A small, flexible command bus. Handy for building service layers.

86415.4M127](/packages/league-tactician)[league/climate

PHP's best friend for the terminal. CLImate allows you to easily output colored text, special formats, and more.

1.9k14.0M273](/packages/league-climate)[nategood/commando

PHP CLI Commando Style

8123.3M38](/packages/nategood-commando)[helhum/typo3-console

A reliable and powerful command line interface for TYPO3 CMS

2939.0M192](/packages/helhum-typo3-console)[adhocore/cli

Command line interface library for PHP

3501.2M50](/packages/adhocore-cli)[illuminated/console-mutex

Mutex for Laravel Console Commands.

146938.2k1](/packages/illuminated-console-mutex)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
