1. Go to this page and download the library: Download pmjones/auto-shell 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/ */
pmjones / auto-shell example snippets
use AutoShell\Console;
namespace: 'Project\Cli\Command',
directory: dirname(__DIR__) . '/src/Cli/Command',
help: 'The console for my Project.' . PHP_EOL . PHP_EOL,
);
$code = $console($_SERVER['argv']);
exit($code);
namespace Project\Cli\Command;
class Hello
{
public function __invoke(string $name) : int
{
echo "Hello {$name}" . PHP_EOL;
return 0;
}
}
namespace Project\Cli\Command\HelloOptions;
use AutoShell\Option;
use AutoShell\Options;
class HelloOptions implements Options
{
public function __construct(
#[Option('u,upper')]
public readonly ?bool $useUpperCase
) {
}
}
namespace Project\Cli\Command;
class Hello
{
public function __invoke(
HelloOptions $options,
string $name
) : int
{
if ($options->useUpperCase) {
$name = strtoupper($name);
}
echo "Hello {$name}" . PHP_EOL;
return 0;
}
}
namespace Project\Cli\Command;
use AutoShell\Help;
#[Help("Says hello to a _name_ of your choice.")]
class Hello
{
public function __invoke(
HelloOptions $options,
#[Help("The _name_ to say hello to.")]
string $name
) : int
{
if ($options->useUpperCase) {
$name = strtoupper($name);
}
echo "Hello {$name}" . PHP_EOL;
return 0;
}
}
namespace Project\Cli\Command\HelloOptions;
use AutoShell\Option;
use AutoShell\Options;
class HelloOptions implements Options
{
public function __construct(
#[Option('u,upper', help: "Output the _name_ in upper case.")]
public readonly ?bool $useUpperCase
) {
}
}
namespace Project\Cli\Command;
use AutoShell\Option;
use AutoShell\Options;
class FooOptions implements Options
{
public function __construct(
#[Option('b,bar')]
public readonly ?bool $barval,
) {
}
}
namespace Project\Cli\Command;
class Foo
{
public function __invoke(FooOptions $options) : int
{
if ($options->barval) {
// $barval is true
}
return 0;
}
}
namespace Project\Cli\Command;
class Foo
{
public function __invoke(
CommonOptions $commonOptions,
FooOptions $fooOptions
) : int
{
if ($commonOptions->verbose) {
// increased verbosity
}
if ($fooOptions->bar) {
// do whatever 'bar' means
}
return 0;
}
}
namespace Project\Cli\Command;
use AutoShell\Help;
#[Help(
'This command does something.',
<<<HELP
*DESCRIPTION*
This is a longer description of the command.
*EXAMPLES*
Look for examples _elsewhere_.
HELP
)]
class Foo
{
// ...
}