PHP code example of hhpack / getopt

1. Go to this page and download the library: Download hhpack/getopt 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/ */

    

hhpack / getopt example snippets

hack
use HHPack\Getopt as cli;

final class Options {
    public bool $help = false;
    public bool $version = false;
    public string $fileName = 'test';
}

$options = new Options();

$parser = cli\optparser([
    cli\take_on([ '-n', '--name' ], 'NAME', 'file name', ($name) ==> { $options->fileName = $name; }),
    cli\on([ '-h', '--help' ], 'display help message', () ==> { $options->help = true; }),
    cli\on([ '-v', '--version' ], 'display version', () ==> { $options->version = true; })
]);

$args = $parser->parse($argv);

if ($options->help === true) {
    echo 'help on', PHP_EOL;
}

if ($options->version === true) {
    echo 'version on', PHP_EOL;
}

if ($options->fileName !== 'test') {
    echo 'name = ', $fileName, PHP_EOL;
}
hack
use HHPack\Getopt as cli;
use HHPack\Getopt\App\{ ArgumentParser };

final class CliApplication
{

    private bool $help = false;
    private bool $version = false;
    private string $fileName = 'test';
    private ArgumentParser $argParser;

    public function __construct()
    {
        $this->argParser = cli\app('example', '1.0.0')
            ->description("This cli application is example.\n\n")
            ->usage("  {app.name} [OPTIONS]\n\n")
            ->options([
                cli\on(['-h', '--help'], 'display help message', () ==> {
                    $this->help = true;
                }),
                cli\on(['-v', '--version'], 'display version', () ==> {
                    $this->version = true;
                }),
                cli\take_on(['-n', '--name'], 'NAME', 'file name', ($name) ==> {
                    $this->fileName = $name;
                })
            ]);
    }

    public function run(Traversable<string> $argv): void
    {
        $this->argParser->parse($argv);

        if ($this->help) {
            $this->argParser->displayHelp();
        } else if ($this->version) {
            $this->argParser->displayVersion();
        } else {
            echo "file name: ", $this->fileName, PHP_EOL;
        }
    }
}

(new CliApplication())->run($argv);