console-extra-bundle icon indicating copy to clipboard operation
console-extra-bundle copied to clipboard

Symfony2 bundle that allows commands to be declared as DI services.

SeiffertConsoleExtraBundle

This bundle adds support for commands defined as DI services.

Build Status

Setup

Require the package via composer:

composer.json:

    "require": {
        ...
        "seiffert/console-extra-bundle": "1.0.0",
        ...
    }

Activate the bundle in your AppKernel:

app/AppKernel.php:

    public function registerBundles()
    {
        $bundles = array(
            ...
            new Seiffert\ConsoleExtraBundle\SeiffertConsoleExtraBundle(),
            ...
        );
        ...
    }

Disable automatic command registration in each of your bundles defining commands by overriding Bundle::registerCommands() with an empty implementation:

src\You\YourBundle\YouYourBundle.php:

    public function registerCommands(Application $application)
    {
        // commands are registered by SeiffertConsoleExtraBundle
    }

Usage

After following the above setup steps, you can start defining all your commands as services. Command services are being identified by a special tag console.command:

src\You\YourBundle\Resources\config\services.yml:

parameters:
    acme_demo.test_command.class: Acme\DemoBundle\Command\TestCommand

services:
    acme_demo.test_command:
        class: %acme_demo.test_command.class%
        tags:
            - { "name": "console.command" }

Your commands will be added to the dependency injection container. This enables you to write commands that have their dependencies injected and therefore are truly unit-testable.