PHP code example of nette / command-line
1. Go to this page and download the library: Download nette/command-line 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/ */
nette / command-line example snippets
use Nette\CommandLine\Parser;
$parser = new Parser;
$parser->addFromHelp('
-h, --help Show this help
-v, --verbose Enable verbose mode
-o, --output <file> Output file
-f, --format [type] Output format (default: json)
-I, --
[
'--help' => true, // or null if not used
'--verbose' => null,
'--output' => 'file.txt', // or null if not used
'--format' => 'json', // fallback from (default: json)
'--
$args = $parser->parse(['--verbose', '-o', 'out.txt']);
$parser->addFromHelp('
-c, --config <file> Configuration file
-I, --ser::RealPath => true,
],
'--
use Nette\CommandLine\Parser;
$parser = new Parser;
$parser
->addSwitch('--verbose', '-v')
->addOption('--output', '-o')
->addArgument('file');
$args = $parser->parse();
$args = $parser->parse(['--verbose', '-o', 'out.txt', 'input.txt']);
$parser->addSwitch('--verbose', '-v');
// --verbose → true
// -v → true
// (not used) → null
$parser->addOption('--output', '-o');
// --output file.txt → 'file.txt'
// --output=file.txt → 'file.txt'
// -o file.txt → 'file.txt'
// --output → throws exception (value
$parser->addOption('--format', '-f', optionalValue: true);
// --format json → 'json'
// --format → true
// (not used) → null
$parser->addOption('--output', '-o');
// -o first.txt -o second.txt → 'second.txt'
$parser->addArgument('input');
// script.php file.txt → 'file.txt'
// (not used) → throws exception
$parser->addArgument('output', optional: true);
// (not used) → null
$parser->addArgument('output', optional: true, fallback: 'out.txt');
// (not used) → 'out.txt'
$parser->addOption('--format', '-f', optionalValue: true, fallback: 'json');
// --format xml → 'xml'
// --format → true (option used without value)
// (not used) → 'json' (fallback)
// all of these are equivalent:
// script.php --verbose input.txt
// script.php input.txt --verbose
$parser->addOption('--format', '-f', enum: ['json', 'xml', 'csv']);
// --format yaml → throws "Value of option --format must be json, or xml, or csv."
$parser->addOption('-- ['src', 'lib']
// (not used) → []
$parser->addArgument('files', optional: true, repeatable: true);
// a.txt b.txt → ['a.txt', 'b.txt']
$parser->addOption('--count', normalizer: fn($v) => (int) $v);
// --count 42 → 42 (integer)
$parser->addOption('--config', normalizer: Parser::normalizeRealPath(...));
// --config app.ini → '/full/path/to/app.ini'
// --config missing.ini → throws "File path 'missing.ini' not found."
$parser
->addFromHelp('
-v, --verbose Enable verbose mode
-q, --quiet Suppress output
')
->addOption('--config', '-c', normalizer: Parser::normalizeRealPath(...),
description: 'Configuration file')
->addArgument('input', description: 'Input file');
use Nette\CommandLine\Parser;
$parser = new Parser;
$parser
->addOption('--output', '-o')
->addArgument('file');
try {
$args = $parser->parse();
} catch (\Exception $e) {
fwrite(STDERR, "Error: {$e->getMessage()}\n");
exit(1);
}
if ($parser->isEmpty()) {
$parser->help();
exit;
}
$parser = new Parser;
$parser
->addSwitch('--help', '-h')
->addSwitch('--version', '-V')
->addArgument('input'); // $info['--help']) {
$parser->help();
exit;
}
if ($info['--version']) {
echo "1.0.0\n";
exit;
}
// Now do full parsing with validation
$args = $parser->parse();
#!/usr/bin/env php
use Nette\CommandLine\Parser;
-help Show this help
-v, --verbose Show detailed output
-n, --dry-run Show what would be done
-f, --format [type] Output format (default: json)
-o, --output <file> Output file
', [
'--format' => [
Parser::Enum => ['json', 'xml', 'csv'],
],
])
->addArgument('input', normalizer: Parser::normalizeRealPath(...));
// Handle --help before validation (avoids "missing argument" error)
if ($parser->isEmpty() || $parser->parseOnly(['--help'])['--help']) {
echo "Usage: convert [options] <input>\n\n";
$parser->help();
exit;
}
try {
$args = $parser->parse();
} catch (\Exception $e) {
fwrite(STDERR, "Error: {$e->getMessage()}\n");
exit(1);
}
if ($args['--verbose']) {
echo "Converting {$args['input']} to {$args['--format']}...\n";
}
if ($args['--dry-run']) {
echo "Dry run: No changes made.\n";
exit;
}
// ... conversion logic here ...
echo "Done!\n";