PHPDaemon\Utils\Terminal::drawParam PHP Method

drawParam() public method

Draw param (like in man)
public drawParam ( string $name, string $description, array $values = '' ) : void
$name string Param name
$description string Param description
$values array Param allowed values
return void
    public function drawParam($name, $description, $values = '')
    {
        $paramw = round($this->columns / 3);
        echo "\n";
        $leftcolumn = [];
        $valstr = is_array($values) ? implode('|', array_keys($values)) : $values;
        if ('' !== $valstr) {
            $valstr = '=[' . $valstr . ']';
        }
        $paramstr = "  --" . $name . $valstr . "";
        $pl = mb_orig_strlen($paramstr);
        if ($pl + 2 >= $paramw) {
            $paramw = $pl + 3;
        }
        $descw = $this->columns - $paramw;
        $leftcolumn[] = $paramstr;
        if (is_array($values)) {
            foreach ($values as $key => $value) {
                $leftcolumn[] = '    ' . $key . ' - ' . $value;
            }
        }
        if (strlen($description) <= $descw) {
            $rightcolumn[] = $description;
        } else {
            $m = explode(' ', $description);
            $descstr = '';
            while (sizeof($m) > 0) {
                $el = array_shift($m);
                if (strlen($descstr) + mb_orig_strlen($el) >= $descw) {
                    $rightcolumn[] = $descstr;
                    $descstr = '';
                } else {
                    $descstr .= ' ';
                }
                $descstr .= $el;
            }
            if ('' !== $descstr) {
                $rightcolumn[] = $descstr;
            }
        }
        while (sizeof($leftcolumn) > 0 || sizeof($rightcolumn) > 0) {
            if ($l = array_shift($leftcolumn)) {
                echo str_pad($l, $paramw, ' ');
            } else {
                echo str_repeat(' ', $paramw - 7);
            }
            if ($r = array_shift($rightcolumn)) {
                echo $r;
            }
            echo "\n";
        }
    }

Usage Example

Example #1
0
 /**
  * Print help
  * @return void
  */
 protected static function printHelp()
 {
     $term = new Terminal();
     echo 'phpDaemon ' . Daemon::$version . ". http://phpdaemon.net\n";
     self::printUsage();
     echo "\nAlso you can use some optional parameters to override the same configuration variables:\n";
     foreach (self::$params as $name => $desc) {
         if (empty($desc)) {
             continue;
         } elseif (!is_array($desc)) {
             $term->drawParam($name, $desc);
         } else {
             $term->drawParam($name, isset($desc['desc']) ? $desc['desc'] : '', isset($desc['val']) ? $desc['val'] : '');
         }
     }
     echo "\n";
 }