You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
phpcommandline/Argument/Value/ValueAbstract.class.php

117 lines
3.4 KiB
PHP

<?php
/**
* Déclaration de la classe CommandLine\Argument\Value\ValueArgument.
*/
namespace CommandLine\Argument\Value;
use Fidit\v3\Exception\InvalidArgument;
use CommandLine\Argument\ArgumentAbstract;
use CommandLine\Argument\Value\IArgumentValue;
/**
* Classe abstraite pour les paramètres de type "valeur"
*
* @property int $occurMin {@see $_occurMin $_occurMin}
* @property int|null $occurMax {@see $_occurMax $_occurMax}
*
* @package CommandLine\Argument\Value
*/
abstract class ValueAbstract extends ArgumentAbstract implements IArgumentValue {
/**
* @var int Le nombre minimum d'occurence.
*/
protected $_occurMin = 1;
/**
* @var int|null Le nombre maximum d'occurence.
*/
protected $_occurMax = 1;
/**
* Crée un nouvel argument.
*
* @param string $name Le nom de l'argument
* @param string|null $description La description de l'argument
* @param boolean $optional Argument optionel ?
*/
protected function __construct ($name, $description, $optional = false) {
parent::__construct($name, $description);
$this->setOptional($optional);
}
public function getOccurMin() {
return $this->_occurMin;
}
/**
* Définit le nombre minimum d'occurence.
*
* @param int $occurMin Le nombre minimum
*
* @return $this
*
* @throws InvalidArgument Si la valeur n'est pas un entier positif.
*
* @see $_occurMin
*/
public function setOccurMin($occurMin) {
if (!is_numeric($occurMin))
throw new InvalidArgument($occurMin, 'La valeur n\'est pas un entier');
if (floor($occurMin) != $occurMin)
throw new InvalidArgument($occurMin, 'La valeur n\'est pas un entier');
$int = (int)$occurMin;
if($int < 0)
throw new InvalidArgument($occurMin, 'La valeur n\'est pas un entier positif');
$this->_occurMin = $int;
return $this;
}
/**
* Définit si l'argument est facultatif ou non.
*
* @param bool $optional Argument facultatif ?
*
* @return $this
*/
public function setOptional($optional = false) {
try {
$this->setOccurMin($optional ? 0 : 1);
}
catch(InvalidArgument $e) {}
return $this;
}
public function getOccurMax() {
return $this->_occurMax;
}
/**
* Définit le nombre mawimum d'occurence.
*
* @param int|null $occurMax Le nombre maximum
*
* @return $this
*
* @throws InvalidArgument Si la valeur n'est pas Null ou un entier strictement positif.
*
* @see $_occurMax
*/
public function setOccurMax($occurMax) {
if (!is_null($occurMax)) {
if (!is_numeric($occurMax))
throw new InvalidArgument($occurMax, 'La valeur n\'est pas un entier');
if (floor($occurMax) != $occurMax)
throw new InvalidArgument($occurMax, 'La valeur n\'est pas un entier');
$occurMax = (int)$occurMax;
if ($occurMax <= 0)
throw new InvalidArgument($occurMax, 'La valeur n\'est pas un entier strictement positif');
}
$this->_occurMax = $occurMax;
return $this;
}
}