Example #1
0
 /**
  * ヘルプを表示
  *
  * @param string $class クラス名
  * @param string $method メソッド名
  * @param boolean $flush 出力するか
  * @return string
  */
 public static final function help($class, $method = null, $flush = true)
 {
     $ref = new self($class);
     $doc = "\nHelp in class " . $ref->name() . " ";
     $docs = array();
     $tab = "  ";
     if (empty($method)) {
         $doc .= ":\n";
         $doc .= $tab . str_replace("\n", "\n" . $tab, $ref->document()) . "\n\n";
         if ($ref->is_extends()) {
             $doc .= $tab . "Extends:\n";
             $doc .= $tab . $tab . $ref->extends() . "\n\n";
         }
         if ($ref->is_mixin_object()) {
             $doc .= $tab . "Mixin:\n";
             foreach ($ref->mixin_object() as $o) {
                 $doc .= $tab . $tab . $o . "\n";
             }
             $doc .= "\n";
         }
         $doc .= $tab . "Author:\n";
         $doc .= $tab . $tab . $ref->author() . "\n\n";
         $doc .= $tab . "Valid line: \n";
         $doc .= $tab . $tab . $ref->valid_line() . " lines";
         $doc .= "\n\n";
         $doc .= $tab . "Const: \n";
         foreach ($ref->def() as $d) {
             $doc .= $tab . $tab . "[" . $d->name() . "]" . $tab . $d->document() . "\n";
         }
         $doc .= "\n";
         $public = $static = $protected = $methods = array();
         foreach ($ref->methods() as $name => $m) {
             if (!$m->is_extends()) {
                 if ($m->is_public()) {
                     if ($m->is_static()) {
                         $static[$name] = $m;
                     } else {
                         $public[$name] = $m;
                     }
                 } else {
                     if ($m->is_protected() && !$m->is_final() && !$m->is_static()) {
                         $protected[$name] = $m;
                     } else {
                         if (!$m->is_private() && substr($m->name(), 0, 1) != "_") {
                             $methods[$name] = $m;
                         }
                     }
                 }
             }
         }
         $doc .= $tab . "Static methods defined here:\n";
         $len = Text::length(array_keys($static));
         foreach ($static as $m) {
             $doc .= $tab . $tab . str_pad($m->name(), $len) . ": " . $m->summary() . "\n";
         }
         $doc .= "\n\n";
         $doc .= $tab . "Methods defined here:\n";
         $len = Text::length(array_keys($public));
         foreach ($public as $m) {
             $doc .= $tab . $tab . str_pad($m->name(), $len) . ": " . $m->summary() . "\n";
         }
         $doc .= "\n\n";
         $doc .= $tab . "Methods list you can override:\n";
         $len = Text::length(array_keys($protected));
         foreach ($protected as $m) {
             $doc .= $tab . $tab . str_pad($m->name(), $len) . ": " . $m->summary() . "\n";
         }
         $doc .= "\n\n";
         $doc .= $tab . "Methods list:\n";
         foreach ($methods as $m) {
             $doc .= $tab . $tab . $m->str() . "\n";
         }
     } else {
         if ($ref->is_methods($method)) {
             $m = $ref->in_methods($method);
             $doc .= "in method " . $method . ":\n";
             $doc .= $tab . str_replace("\n", "\n" . $tab, $m->document()) . "\n\n";
             $doc .= "\n";
             if ($m->is_author()) {
                 $doc .= $tab . "Author:\n";
                 $doc .= $tab . $tab . $m->author() . "\n\n";
             }
             $doc .= $tab . "Parameter:\n";
             $len = Text::length(array_keys($m->param()));
             foreach ($m->param() as $name => $o) {
                 $doc .= $tab . $tab . str_pad($name, $len) . " : [" . $o->type() . "] " . ($o->require() ? "" : "(default: " . $o->default() . ") ") . $o->document() . "\n";
             }
             $doc .= "\n";
             $doc .= $tab . "Return:\n";
             $doc .= $tab . $tab . $m->return() . "\n\n";
             if ($m->is_request()) {
                 $doc .= $tab . "Request:\n";
                 $len = Text::length(array_keys($m->request()));
                 foreach ($m->request() as $name => $d) {
                     $doc .= $tab . $tab . str_pad($name, $len) . " : " . $d . "\n";
                 }
                 $doc .= "\n";
             }
             if ($m->is_module()) {
                 $doc .= $tab . "Module Method:\n";
                 $len = Text::length(array_keys($m->module()));
                 foreach ($m->module() as $name => $d) {
                     $doc .= $tab . $tab . str_pad($name, $len) . " : " . $d . "\n";
                 }
                 $doc .= "\n";
             }
         } else {
             throw new InvalidArgumentException($class . " " . $method . " not found");
         }
     }
     if ($flush) {
         print $doc;
     }
     return $doc;
 }