A simple, lightweight console implementation for command-line PHP applications.
This component was conceived as a replacement for the symfony/console component.
After several years using the symfony/console, it became more and more obvious: for most cases, the component was not fitting the needs.
Such a Swiss Army Knife component may be perfect for who has a rapid-development, short term objective, or for a proof-of-concept. But in most cases, only a few among the plenty of available features are necessary.
This is like sending a whole leathernecks squadron to kill a harmless fly.
So here came the need for the yannoff/console component.
Yet the idea was not to reinvent the wheel, but merely to provide a simpler, lighter (in size & resource) and more POSIX-compliant implementation for PHP command-line applications.
Via composer:
$ composer require yannoff/console
Here is a Hello World command example:
First the application script, the script that will be invoked using php bin/app.php
#!/usr/bin/env php
<?php
// bin/app.php
require __DIR__ . '/../vendor/autoload.php';
use Yannoff\Component\Console\Application;
use Acme\Demo\HelloCommand;
$application = new Application('acme', '0.0.0');
$application->addCommands([
new HelloCommand('hello'),
]);
$application->run();
Then the command file:
<?php
// src/Acme/Demo/
namespace Acme\Demo;
use Yannoff\Component\Console\Command;
use Yannoff\Component\Console\Definition\Argument;
use Yannoff\Component\Console\Definition\Option;
class HelloCommand extends Command
{
public function configure()
{
$this
->setName('hello')
->setHelp('Hello world')
->setDescription('Hello world demo application')
->addArgument(
'name',
Argument::OPTIONAL,
'Optional name to greet'
)
->addOption(
'upper',
'u',
Option::FLAG,
'Print the greetings in upper case'
)
;
}
public function execute()
{
$name = $this->getArgument('name');
$upper = $this->getOption('upper');
$message = 'Hello ' . (null === $name ? 'World' : $name);
if ($upper) {
$message = strtoupper($message);
}
$this->writeln($message);
return 0;
}
}
People willing to migrate from symfony/console may want to have a look at the migration section of the documentation.
Licensed under the MIT Licence.