Giter VIP home page Giter VIP logo

consoleserviceprovider's Introduction

ConsoleServiceProvider

This project is now maintained by Crimson Labs .

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

Install

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.

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:

#!/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

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());            
});

?>

consoleserviceprovider's People

Contributors

ubermuda avatar weaverryan avatar tigr avatar rybakit avatar crimsonlabs avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.