1. Go to this page and download the library: Download clue/commander library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
clue / commander example snippets
$router = new Clue\Commander\Router();
$router->add('exit [<code:uint>]', function (array $args) {
exit(isset($args['code']) ? $args['code'] : 0);
});
$router->add('sleep <seconds:uint>', function (array $args) {
sleep($args['seconds']);
});
$router->add('echo <words>...', function (array $args) {
echo join(' ', $args['words']) . PHP_EOL;
});
$router->add('[--help | -h]', function () use ($router) {
echo 'Usage:' . PHP_EOL;
foreach ($router->getRoutes() as $route) {
echo ' ' .$route . PHP_EOL;
}
});
$router->execArgv();
$router = new Router();
$route = $router->add($path, $fn);
$router->add('', function() {
echo 'No arguments given. Need help?' . PHP_EOL;
});
// matches: (empty string)
// does not match: hello (too many arguments)
$router->add('user list', function () {
echo 'Here are all our users…' . PHP_EOL;
});
// matches: user list
// does not match: user (missing
$router->add('user (list | listing | ls)', function () {
echo 'Here are all our users…' . PHP_EOL;
});
// matches: user list
// matches: user listing
// matches: user ls
// does not match: user (missing
$router->add('user add <name>', function (array $args) {
assert(is_string($args['name']));
var_dump($args['name']);
});
// matches: user add clue
// does not match: user add (missing er add -- --test (value: --test)
// matches: user add -- -nobody- (value: -nobody-)
// matches: user add -- -- (value: --)
$router->add('user ban <id:int> <force:bool>', function (array $args) {
assert(is_int($args['id']));
assert(is_bool($args['force']));
});
// matches: user ban 10 true
// matches: user ban 10 0
// matches: user ban -10 yes
// matches: user ban -- -10 no
// does not match: user ban 10 (missing
$router->add('user search [<query>]', function (array $args) {
assert(!isset($args['query']) || is_string($args['query']));
var_dump(isset($args['query']);
});
// matches: user search
// matches: user search clue
// does not match: user search hello world (too many arguments)
$router->add('user delete <names>...', function (array $args) {
assert(is_array($args);
assert(count($args) > 0);
var_dump($args['names']);
});
// matches: user delete clue
// matches: user delete hello world
// does not match: user delete (missing
$router->add('user dump [<names>...]', function (array $args) {
if (isset($args['names'])) {
assert(is_array($args);
assert(count($args) > 0);
var_dump($args['names']);
} else {
var_dump('no names');
}
});
// matches: user dump
// matches: user dump clue
// matches: user dump hello world
$router->add('user list [--json] [-f]', function (array $args) {
assert(!isset($args['json']) || $args['json'] === false);
assert(!isset($args['f']) || $args['f'] === false);
});
// matches: user list
// matches: user list --json
// matches: user list -f
// matches: user list -f --json
// matches: user -f list
// matches: --json user list
$router->add('user setup [--help | -h]', function (array $args) {
assert(!isset($args['help']) || $args['help'] === false);
assert(!isset($args['h']) || $args['h'] === false);
assert(!isset($args['help'], $args['h']);
});
// matches: user setup
// matches: user setup --help
// matches: user setup -h
// does not match: user setup --help -h (only accept eithers, not both)
$router->add('[--sort[=<param>]] [-i=<start:int>] user list', function (array $args) {
assert(!isset($args['sort']) || $args['sort'] === false || is_string($args['sort']));
assert(!isset($args['i']) || is_int($args['i']));
});
// matches: user list
// matches: user list --sort
// matches: user list --sort=size
// matches: user list --sort size
// matches: user list -i=10
// matches: user list -i 10
// matches: user list -i10
// matches: user list -i=-10
// matches: user list -i -10
// matches: user list -i-10
// matches: user -i=10 list
// matches: --sort -- user list
// matches: --sort size user list
// matches: user list --sort -i=10
// does not match: user list -i (missing option value)
// does not match: user list -i --sort (missing option value)
// does not match: user list -i=a (invalid value does not validate)
// does not match: --sort user list (user will be interpreted as option value)
// does not match: user list --sort -2 (value looks like an option)
$router->add('[--ask=(yes | no)] [-l[=0]] user purge', function (array $args) {
assert(!isset($args['ask']) || $args['sort'] === 'yes' || $args['sort'] === 'no');
assert(!isset($args['l']) || $args['l'] === '0');
});
// matches: user purge
// matches: user purge --ask=yes
// matches: user purge --ask=no
// matches: user purge -l
// matches: user purge -l=0
// matches: user purge -l 0
// matches: user purge -l0
// matches: user purge -l --ask=no
// does not match: user purge --ask (missing option value)
// does not match: user purge --ask=maybe (invalid option value)
// does not match: user purge -l4 (invalid option value)