seiffert/console-extra-bundle

This bundle adds support for commands defined as DI services

1.0.0 2012-12-08 20:40 UTC

This package is not auto-updated.

Last update: 2024-05-11 12:03:33 UTC


README

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.