Julio Montoya 3dd9d88e31 Updating vendors | 11 tahun lalu | |
---|---|---|
.. | ||
Knp | 11 tahun lalu | |
README.md | 11 tahun lalu | |
composer.json | 11 tahun lalu |
Provides a Symfony\Component\Console
based console for Silex.
Add knplabs/console-service-provider
to your composer.json
and register the service:
<?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
$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
.
Use the console just like any Symfony\Component
based console:
$ app/console my:command
Your commands should extend Knp\Command\Command
to have access to the 2 useful following commands:
getSilexApplication
, which returns the silex applicationgetProjectDirectory
, which returns your project's root directory (as configured earlier)I know, it's a lot to learn, but it's worth the pain.
There are two ways of registering commands to the console application.
console
executableOpen up app/console
, and stuff your commands directly into the console application:
#!/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();
?>
This way is intended for use by provider developers and exposes an unobstrusive way to register commands in 3 simple steps:
ConsoleEvents::INIT
eventExample:
<?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());
});
?>