2017 © Pedro Peláez
 

library slim-commander

A very simple structure for running CLI commands as part of your Slim Framework application

image

drewm/slim-commander

A very simple structure for running CLI commands as part of your Slim Framework application

  • Tuesday, February 20, 2018
  • by drewm
  • Repository
  • 1 Watchers
  • 2 Stars
  • 57 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 418 % Grown

The README.md

SlimCommander

A very simple structure for running CLI commands as part of your Slim Framework application., (*1)

This is not a console tool. It's just a parallel to the HTTP entry point into your application, enabling you to do things like create create scripts to be run as cronjobs or set up basic queue listeners., (*2)

Usage

Taking the structure of Slim-Skeleton as an example, your public/index.php does this:, (*3)

require __DIR__ . '/../vendor/autoload.php';

session_start();

// Instantiate the app
$settings = require __DIR__ . '/../src/settings.php';
$app = new \Slim\App($settings);

// Set up dependencies
require __DIR__ . '/../src/dependencies.php';

// Register middleware
require __DIR__ . '/../src/middleware.php';

// Register routes
require __DIR__ . '/../src/routes.php';

// Run app
$app->run();

You need to create a new PHP script, similar to this, to serve as the entry point for your commands. It should be outside the public folder. Perhaps src/cli.php., (*4)

require __DIR__ . '/../vendor/autoload.php';

// Instantiate the app
$settings = require __DIR__ . '/settings.php';
$app = new \DrewM\SlimCommander\App($settings);

// Set up dependencies
require __DIR__ . '/dependencies.php';

// Register commands instead of routes
require __DIR__ . '/commands.php';

// Run app
$app->run($argv);

Instead of routes, you define commands in e.g. src/commands.php., (*5)

$app->command('HelloWorld', 'HelloWorld:greet', [
    'name',
]);

Arguments are:, (*6)

  1. Name of the command
  2. The callback, defined in the same way as a regular Slim route callback
  3. An array of expected argument names

In the above example, the first argument will be passed to the callback as name, (*7)

Your callback gets the container passed to its constructor:, (*8)

class HelloWorld
{
    private $container;

    public function __construct($container)
    {
        $this->container = $container;
    }

    public function greet($args)
    {
        echo "Hello " . $args['name'];
    }
}

Add it to your container, just as you would normally:, (*9)

$container['HelloWorld'] = function ($container) {
    return new \App\Commands\HelloWorld($container);
};

And then you'd execute it with php src/cli.php HelloWorld Fred, (*10)

The Versions

20/02 2018

dev-master

9999999-dev http://github.com/drewm/slim-commander

A very simple structure for running CLI commands as part of your Slim Framework application

  Sources   Download

MIT

The Requires

 

The Development Requires

cli slim

20/02 2018

v0.1

0.1.0.0 http://github.com/drewm/slim-commander

A very simple structure for running CLI commands as part of your Slim Framework application

  Sources   Download

MIT

The Requires

 

cli slim