1. Go to this page and download the library: Download afeefa/cli-app 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/ */
afeefa / cli-app example snippets
feefa\Component\Cli\Cli;
use Afeefa\Component\Cli\Command;
class Cats extends Command
{
protected function executeCommand()
{
$this->printList(['Kitty', 'Tiger', 'Meow']);
}
}
class Dogs extends Command
{
protected function executeCommand()
{
$this->printList(['Laika', 'Lassie', 'Goofy']);
}
}
(new Cli('Pets App'))
->command('cats', Cats::class, 'Show cats')
->command('dogs', Dogs::class, 'Show dogs')
->run();
...
use Afeefa\Component\Cli\Action;
class Names extends Action
{
protected function executeAction()
{
$pet = $this->getArgument('pet');
$names = $pet === 'cat'
? ['Kitty', 'Tiger', 'Meow']
: ['Laika', 'Lassie', 'Goofy'];
return $this->printChoice("Select a $pet", $names); // prompt
}
}
class Feed extends Command
{
protected function executeCommand()
{
$pet = $this->getCommandMode();
$name = $this->runAction(Names::class, ['pet' => $pet]);
$this->printBullet("Feed <info>$name</info>");
}
}
class Cuddle extends Command
{
protected function executeCommand()
{
$name = $this->runAction(Names::class, ['pet' => 'cat']);
$this->printBullet("Cuddle <info>$name</info>");
}
}
(new Cli('Pets App'))
->command('feed-cat', [Feed::class, 'cat'], 'Feed a cat') // 'cat' = mode
->command('feed-dog', [Feed::class, 'dog'], 'Feed a dog')
->command('cuddle-cat', Cuddle::class, 'Cuddle a cat')
->run();
...
use Afeefa\Component\Cli\SelectableArgument;
class Walk extends Command
{
protected function setArguments()
{
$this->addSelectableArgument( // selectable argument
'pet', ['cat', 'dog'], 'The pet to walk with'
);
$this->addSelectableArgument( // dependent argument
'name',
function (SelectableArgument $argument) {
$pet = $this->getArgument('pet');
$argument->choices = $pet === 'cat'
? ['Kitty', 'Tiger', 'Meow']
: ['Laika', 'Lassie', 'Goofy'];
$argument->description = 'The name of the ' . $pet;
}
);
}
protected function executeCommand()
{
$pet = $this->getArgument('pet');
$name = $this->getArgument('name');
if ($pet === 'cat') {
$this->printBullet("<info>$name</info> does not walk with you");
} else {
$this->printBullet("<info>$name</info> is happy to walk with you");
}
}
}
(new Cli('Pets App'))
->command('walk', Walk::class, 'Walk with a pet')
->default('walk')
->run();
...
use Afeefa\Component\Cli\Definitions\GroupDefinition as Group;
class Play extends Command
{
protected function executeCommand()
{
$action = $this->getLocalName();
$pet = $this->getLocalParentName();
if ($pet === 'cat') {
$this->printBullet("<info>Cat</info> does not like <info>$action</info>");
} else {
$this->printBullet("<info>Dog</info> likes <info>$action</info>");
}
}
}
(new Cli('Pets App'))
->group('cat', 'Play with cat', function (Group $group) {
$group->command('hide-seek', Play::class, 'Hide and seek');
})
->group('dog', 'Play with dog', function (Group $group) {
$group
->command('fetch', Play::class, 'Fetch the stick')
->command('cuddle', Play::class, 'Cuddle the dog');
})
->run();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.