diff --git a/.gitignore b/.gitignore index 82cfc4e..6c0453b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .idea composer.lock vendor +.phpunit.result.cache +phpunit.xml.dist.bak diff --git a/CHANGELOG.md b/CHANGELOG.md index 9286e30..19dc1fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Changeed +## [2.1.0](https://github.com/bazzline/php_component_cli_argument/tree/2.1.0) - released at 2022-11-23 + +### Changeed + +* Raised minimum php version requirement from `7.0` to `8.0` +* Updated development requirement from phpunit 6.0 to 8.0 +* Migrated phpunit xml +* Migrated code base to php 8.0 + ## [2.0.0](https://github.com/bazzline/php_component_cli_argument/tree/2.0.0) - released at 2018-01-12 ### Changed diff --git a/Example/run.php b/Example/run.php index e1c606f..c9c239e 100644 --- a/Example/run.php +++ b/Example/run.php @@ -4,9 +4,11 @@ * @since: 2015-04-16 */ +use Net\Bazzline\Component\Cli\Arguments\Arguments; + require_once __DIR__ . '/../vendor/autoload.php'; -$arguments = new \Net\Bazzline\Component\Cli\Arguments\Arguments($argv); +$arguments = new Arguments($argv); if ($arguments->hasArguments()) { echo $arguments->getNumberOfArguments() . ' arguments provided:' . PHP_EOL; diff --git a/composer.json b/composer.json index b96ec55..4391e9d 100644 --- a/composer.json +++ b/composer.json @@ -18,10 +18,10 @@ "type": "library", "minimum-stability": "dev", "require": { - "php": "~7.0" + "php": "~8.0" }, "require-dev": { - "phpunit/phpunit": "~6.0" + "phpunit/phpunit": "~9.0" }, "license": "LGPL-3.0-only", "authors": [ diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 13323cf..ece9c20 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,17 +1,9 @@ - - - - - test/ - - + + + + + + test/ + + diff --git a/source/Arguments.php b/source/Arguments.php index 2153dc1..3e8f4ac 100644 --- a/source/Arguments.php +++ b/source/Arguments.php @@ -8,26 +8,13 @@ class Arguments { - /** @var array */ - private $arguments; + private array $arguments; + private array $flags; + private array $lists; + private Parser $parser; + private array $values; - /** @var array */ - private $flags; - - /** @var array */ - private $lists; - - /** @var Parser */ - private $parser; - - /** @var array */ - private $values; - - /** - * @param null|array $argv - * @param boolean $removeFirstArgument - */ - public function __construct($argv = null, $removeFirstArgument = true) + public function __construct(array $argv = null, bool $removeFirstArgument = true) { $this->parser = new Parser(); @@ -38,137 +25,84 @@ public function __construct($argv = null, $removeFirstArgument = true) } } - /** - * @return array - */ - public function getArguments() + public function getArguments(): array { return $this->arguments; } - /** - * @return array - */ - public function getFlags() + public function getFlags(): array { return $this->flags; } - /** - * @param string $name - * @return null|array - */ - public function getList($name) + public function getList(string $name): null|array { return (isset($this->lists[$name])) ? $this->lists[$name] : null; } - /** - * @return int - */ - public function getNumberOfArguments() + public function getNumberOfArguments(): int { return (count($this->arguments)); } - /** - * @return int - */ - public function getNumberOfFlags() + public function getNumberOfFlags(): int { return (count($this->flags)); } - /** - * @return int - */ - public function getNumberOfLists() + public function getNumberOfLists(): int { return (count($this->lists)); } - /** - * @return int - */ - public function getNumberOfValues() + public function getNumberOfValues(): int { return (count($this->values)); } - /** - * @return array - */ - public function getLists() + public function getLists(): array { return $this->lists; } - /** - * @return array - */ - public function getValues() + public function getValues(): array { return $this->values; } - /** - * @return bool - */ - public function hasArguments() + public function hasArguments(): bool { return (!empty($this->arguments)); } - /** - * @param string $name - * @return bool - */ - public function hasFlag($name) + public function hasFlag(string $name): bool { return (in_array($name, $this->flags)); } - /** - * @return bool - */ - public function hasFlags() + public function hasFlags(): bool { return (!empty($this->flags)); } - /** - * @param string $name - * @return bool - */ - public function hasList($name) + public function hasList(string $name): bool { return (isset($this->lists[$name])); } - /** - * @return bool - */ - public function hasLists() + public function hasLists(): bool { return (!empty($this->lists)); } - /** - * @return bool - */ - public function hasValues() + public function hasValues(): bool { return (!empty($this->values)); } - /** - * @param array $argv - * @param boolean $removeFirstArgument - * @return $this - */ - public function parseArguments(array $argv, $removeFirstArgument = true) + public function parseArguments(array $argv, bool $removeFirstArgument = true): self { if ($removeFirstArgument) { array_shift($argv); @@ -181,34 +115,22 @@ public function parseArguments(array $argv, $removeFirstArgument = true) return $this; } - /** - * @return array - */ - public function convertToArray() + public function convertToArray(): array { return $this->getArguments(); } - /** - * @return string - */ - public function convertToString() + public function convertToString(): string { return implode(' ', $this->convertToArray()); } - /** - * @return string - */ - public function __toString() + public function __toString(): string { return $this->convertToString(); } - /** - * @param Parser $parser - */ - private function setArgumentsFromParser(Parser $parser) + private function setArgumentsFromParser(Parser $parser): void { $this->flags = $parser->getFlags(); $this->lists = $parser->getLists(); diff --git a/source/Parser.php b/source/Parser.php index f544cc0..0db9a1a 100644 --- a/source/Parser.php +++ b/source/Parser.php @@ -7,24 +7,16 @@ class Parser { - /** @var array */ - private $flags; - - /** @var array */ - private $lists; - - /** @var array */ - private $values; + private array $flags; + private array $lists; + private array $values; public function __construct() { $this->initiate(); } - /** - * @param array $arguments - */ - public function parse(array $arguments) + public function parse(array $arguments): void { $this->initiate(); @@ -33,65 +25,43 @@ public function parse(array $arguments) } } - /** - * @return array - */ - public function getFlags() + public function getFlags(): array { return $this->flags; } - /** - * @return array - */ - public function getLists() + public function getLists(): array { return $this->lists; } - /** - * @return array - */ - public function getValues() + public function getValues(): array { return $this->values; } - /** - * @param string $name - * @param mixed $value - */ - private function addToList($name, $value) + private function addToList(string $name, mixed $value): void { $value = trim($value, '"'); //remove >"< if exists - if (isset($this->lists[$name])) { - $collection = $this->lists[$name]; - } else { - $collection = []; - } + $collection = $this->lists[$name] ?? []; $collection[] = $value; $this->lists[$name] = $collection; } - /** - * @param string $string - * @param string $search - * @return bool - */ - private function contains($string, $search) + private function contains(string $string, string $search): bool { if (strlen($search) === 0) { $contains = false; } else { - $contains = !(strpos($string, $search) === false); + $contains = !(!str_contains($string, $search)); } return $contains; } - private function handleLongNameListOrFlag($argument) + private function handleLongNameListOrFlag(string $argument): void { if ($this->contains($argument, '=')) { $position = strpos($argument, '='); @@ -103,7 +73,7 @@ private function handleLongNameListOrFlag($argument) } } - private function handleShortNameListOrFlag($argument) + private function handleShortNameListOrFlag(string $argument): void { $containsEqualCharacter = ($this->contains($argument, '=')); $equalCharacterIsOnSecondPosition = (strpos($argument, '=') === 1); @@ -118,23 +88,20 @@ private function handleShortNameListOrFlag($argument) $length = strlen($argument); $iterator = 0; while ($iterator < $length) { - $this->flags[] = $argument{$iterator}; + $this->flags[] = $argument[$iterator]; ++$iterator; } } } - private function initiate() + private function initiate(): void { $this->flags = []; $this->lists = []; $this->values = []; } - /** - * @param $argument - */ - private function addToFittingCollection($argument) + private function addToFittingCollection(string $argument): void { if ($this->hasLengthOf($argument, 1)) { $this->values[] = $argument; @@ -149,26 +116,15 @@ private function addToFittingCollection($argument) } } - /** - * @param string $string - * @param string $start - * @return bool - */ - private function startsWith($string, $start) + private function startsWith(string $string, string $start): bool { return (strncmp($string, $start, strlen($start)) === 0); } - /** - * @param string $string - * @param int $expectedLength - * @return bool - */ - private function hasLengthOf($string, $expectedLength) + private function hasLengthOf(string $string, int $expectedLength): bool { - $length = strlen($string); - $hasLengthOf = ($length == $expectedLength); + $length = strlen($string); - return $hasLengthOf; + return ($length == $expectedLength); } }