HEX
Server: Apache
System: Linux s198.coreserver.jp 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: nagasaki (10062)
PHP: 7.1.33
Disabled: NONE
Upload Files
File: /virtual/nagasaki/public_html/ec/vendor/knplabs/console-service-provider/README.md
# ConsoleServiceProvider

Provides a `Symfony\Component\Console` based console for Silex.

## Install

Add `knplabs/console-service-provider` to your `composer.json` and register the service:

```php
<?php

use Knp\Provider\ConsoleServiceProvider;

$app->register(new ConsoleServiceProvider(), array(
    'console.name'              => 'MyApplication',
    'console.version'           => '1.0.0',
    'console.project_directory' => __DIR__.'/..'
));

?>
```

You can now copy the `console` executable in whatever place you see fit, and tweak it to your needs. You will need a way to fetch your silex application, the most common way is to return it from your bootstrap:

```php
<?php

$app = new Silex\Application();

// your beautiful silex bootstrap

return $app;

?>
```

For the rest of this document, we will assume you do have an `app` directory, so the `console` executable will be located at `app/console`.

## Usage

Use the console just like any `Symfony\Component` based console:

```
$ app/console my:command
```

## Write commands

Your commands should extend `Knp\Command\Command` to have access to the 2 useful following commands:

* `getSilexApplication`, which returns the silex application
* `getProjectDirectory`, which returns your project's root directory (as configured earlier)

I know, it's a lot to learn, but it's worth the pain.

## Register commands

There are two ways of registering commands to the console application.

### Directly access the console application from the `console` executable

Open up `app/console`, and stuff your commands directly into the console application:

```php
#!/usr/bin/env php
<?php

set_time_limit(0);

$app = require_once __DIR__.'/bootstrap.php';

use My\Command\MyCommand;

$application = $app['console'];
$application->add(new MyCommand());
$application->run();

?>
```

### Use the Event Dispatcher

This way is intended for use by provider developers and exposes an unobstrusive way to register commands in 3 simple steps:

1. Register a listener to the `ConsoleEvents::INIT` event
2. ???
3. PROFIT!

Example:

```php
<?php

use My\Command\MyCommand;
use Knp\Console\ConsoleEvents;
use Knp\Console\ConsoleEvent;

$app['dispatcher']->addListener(ConsoleEvents::INIT, function(ConsoleEvent $event) {
    $app = $event->getApplication();
    $app->add(new MyCommand());            
});

?>
```