TheSeer\phpDox\CLIOptions::parse PHP Méthode

parse() private méthode

private parse ( )
    private function parse()
    {
        $options = array('file', 'help', 'version', 'collector', 'generator', 'engines', 'enrichers', 'backends', 'skel', 'strip');
        $shortMap = array('f' => 'file', 'h' => 'help', 'c' => 'collector', 'g' => 'generator', 'v' => 'version');
        $valueOptions = array('file');
        $conflictingOptions = array('collector' => array('generator'), 'generator' => array('collector'));
        $argv = $this->argv;
        array_map('trim', $argv);
        if (isset($argv[0][0]) && $argv[0][0] != '-') {
            array_shift($argv);
        }
        foreach ($options as $opt) {
            $this->parsed[$opt] = FALSE;
        }
        $valueExcepted = false;
        $argName = '';
        foreach ($argv as $arg) {
            if ($arg[0] == '-') {
                if (strlen($arg) == 1) {
                    throw new CLIOptionsException(sprintf('Syntax error while parsing option (unnamed switch or option)'));
                }
                if ($arg[1] == '-') {
                    $argName = mb_substr($arg, 2);
                    if (!in_array($argName, $options)) {
                        throw new CLIOptionsException(sprintf('Option "%s" is not defined', $argName));
                    }
                } else {
                    $argChar = mb_substr($arg, 1);
                    if (!isset($shortMap[$argChar])) {
                        throw new CLIOptionsException(sprintf('Option "%s" is not defined', $argChar));
                    }
                    $argName = $shortMap[$argChar];
                }
                if (isset($conflictingOptions[$argName])) {
                    foreach ($conflictingOptions[$argName] as $conflict) {
                        if ($this->parsed[$conflict]) {
                            throw new CLIOptionsException(sprintf('Option "%s" conflicts with already set option "%s"', $argName, $conflict));
                        }
                    }
                }
                $this->parsed[$argName] = TRUE;
                $valueExcepted = in_array($argName, $valueOptions);
                continue;
            }
            if (!$valueExcepted) {
                throw new CLIOptionsException(sprintf('Value for option "%s" provided but none expected', $argName));
            }
            $this->parsed[$argName] = $arg;
        }
    }