jawira / mini-getopt
Very simple wrapper for getopt() function
Installs: 2 348
Dependents: 2
Suggesters: 0
Security: 0
Stars: 2
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- php: ^7.4 || ^8.0
- ext-mbstring: *
- jawira/the-lost-functions: ^1.4
Requires (Dev)
- behat/behat: ^3.8
- jawira/skeleton: ^2.7
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.10
Suggests
- pds/skeleton: Standard PHP package skeleton
- phing/phing: PHP Build Tool
README
Very simple wrapper for getopt()
function.
Usage
This is only a wrapper, therefore the output from mini-getopt
is going to be
the same as getopt()
function.
-
First you have to instantiate
\Jawira\MiniGetopt\MiniGetopt
. -
Then you have to configure options you want to use. To do so use the following methods:
MiniGetopt::addRequired
.MiniGetopt::addOptional
.MiniGetopt::addNoValue
.
-
To retrieve values you have to call one of the following method:
MiniGetopt::getopt
returns the same asgetopt()
. Optionally you can pass$optind
parameter.MiniGetopt::getOption
to get only one value.MiniGetopt::doc
get documentation.
Basic usage
PHP code:
// resources/example.php // Preparing options $mg = new \Jawira\MiniGetopt\MiniGetopt(); $mg->addRequired('f', 'format'); // value is required $mg->addOptional('r', 'retry'); // value is optional $mg->addOptional('q', ''); // only short option $mg->addNoValue('v', 'verbose'); // no value $mg->addNoValue('', 'version'); // only long option // Calling getopt var_export($mg->getopt());
Executing code:
$ php resources/example.php array ( )
$ php resources/example.php -f=xml array ( 'f' => 'xml', )
$ php resources/example.php --format=xml -r -v array ( 'format' => 'xml', 'r' => false, 'v' => false, )
$ php resources/example.php -f=json -r=yes -v array ( 'f' => 'json', 'r' => 'yes', 'v' => false, )
$ php resources/example.php --retry -vvv array ( 'retry' => false, 'v' => array ( 0 => false, 1 => false, 2 => false, ), )
$ php resources/example.php --version=banana --invalid array ( 'version' => false, )
optind
parameter
// Setup $mg = new \Jawira\MiniGetopt\MiniGetopt(); $mg->addRequired('f', 'format'); $mg->addNoValue('v', 'verbose'); // Calling getopt function with `optind` parameter $optind = null; $options = $mg->getopt($optind); echo "optind: $optind" . PHP_EOL;
$ php resources/example.php --format=pdf -vv optind: 3
Generate doc
$mg = new \Jawira\MiniGetopt\MiniGetopt(); $mg->addRequired('f', 'format', 'Format to export', 'png|gif|svg'); $mg->addOptional('r', 'retry', 'Retry on error', 'count'); $mg->addOptional('q', '', 'Quiet mode', 'yes|no'); $mg->addNoValue('v', 'verbose', 'Display verbose messages'); $mg->addNoValue('', 'version', 'Show version'); echo $mg->doc();
$ php resource/example.php OPTIONS -f, --format=<png|gif|svg> Format to export -r, --retry=[count] Retry on error -q=[yes|no] Quiet mode -v, --verbose Display verbose messages --version Show version
How to install
$ composer install jawira/mini-getopt
Contributing
If you liked this project, ⭐ star it on GitHub.
License
This library is licensed under the MIT license.
Packages from jawira
- jawira/emoji-catalog
- Get access to +3000 emojis as class constants.
- jawira/plantuml-encoding
- PlantUML encoding functions.
- jawira/case-converter
- Convert strings between 13 naming conventions: Snake case, Camel case, Pascal case, Kebab case, Ada case, Train case, Cobol case, Macro case, Upper case, Lower case, Sentence case, Title case and Dot notation.
- more...