コード例 #1
0
 /**
  * Display information
  *
  * @param  io.StringWriter $out
  * @return void
  */
 public function display($out)
 {
     $out->write(self::declarationOf($this->mirror));
     $parent = $this->mirror->parent();
     if ('lang.Enum' !== $parent->name()) {
         $this->displayExtensions([$parent], $out, 'extends');
     }
     $this->displayExtensions($this->mirror->interfaces()->declared(), $out, 'implements');
     $separator = false;
     $out->writeLine(' {');
     $this->displayMembers($this->mirror->constants(), $out, $separator);
     foreach (Enum::valuesOf($this->mirror->type()) as $member) {
         $out->write('  ', $member->name(), '(', $member->ordinal(), ')');
         $mirror = new TypeMirror(typeof($member));
         if ($mirror->isSubtypeOf($this->mirror)) {
             $out->writeLine(' {');
             foreach ($mirror->methods()->declared() as $method) {
                 $out->writeLine('    ', (string) $method);
             }
             $separator = true;
             $out->writeLine('  }');
         } else {
             $out->writeLine();
             $separator = true;
         }
     }
     $constructor = $this->mirror->constructor();
     if ($constructor->present()) {
         $this->displayMembers([$constructor], $out, $separator);
     }
     $this->displayMembers($this->mirror->methods()->all(Methods::ofClass()), $out, $separator);
     $this->displayMembers($this->mirror->methods()->all(Methods::ofInstance()), $out, $separator);
     $out->writeLine('}');
 }
コード例 #2
0
 /**
  * Display information
  *
  * @param  io.StringWriter $out
  * @return void
  */
 public function display($out)
 {
     $separator = false;
     $out->write(self::declarationOf($this->mirror));
     $this->displayExtensions($this->mirror->interfaces()->declared(), $out, 'extends');
     $out->writeLine(' {');
     $this->displayMembers($this->mirror->constants(), $out, $separator);
     $this->displayMembers($this->mirror->methods(), $out, $separator);
     $out->writeLine('}');
 }
コード例 #3
0
 /**
  * Display type extensions
  *
  * @param  php.Generator $types
  * @param  io.StringWriter $out
  * @param  string $kinde
  * @return void
  */
 protected function displayExtensions($types, $out, $kind)
 {
     $extensions = [];
     foreach ($types as $type) {
         $type && ($extensions[] = $type->name());
     }
     if ($extensions) {
         $out->write(' ' . $kind . ' ', implode(', ', $extensions));
     }
 }
コード例 #4
0
 /**
  * Display information
  *
  * @param  io.StringWriter $out
  * @return void
  */
 public function display($out)
 {
     $separator = false;
     $out->write(self::declarationOf($this->mirror), ' {');
     $this->displayMembers($this->mirror->constants(), $out, $separator);
     $this->displayMembers($this->mirror->fields(), $out, $separator);
     $constructor = $this->mirror->constructor();
     if ($constructor->present()) {
         $this->displayMembers([$constructor], $out, $separator);
     }
     $this->displayMembers($this->mirror->methods(), $out, $separator);
     $out->writeLine('}');
 }
コード例 #5
0
 /**
  * Display information
  *
  * @param  io.StringWriter $out
  * @return void
  */
 public function display($out)
 {
     $out->write(self::declarationOf($this->mirror));
     $this->displayExtensions([$this->mirror->parent()], $out, 'extends');
     $this->displayExtensions($this->mirror->interfaces()->declared(), $out, 'implements');
     $separator = false;
     $out->writeLine(' {');
     $this->displayMembers($this->mirror->constants(), $out, $separator);
     $this->displayMembers($this->mirror->fields()->declared(), $out, $separator);
     $constructor = $this->mirror->constructor();
     if ($constructor->present()) {
         $this->displayMembers([$constructor], $out, $separator);
     } else {
         $separator = false;
     }
     $this->displayMembers($this->mirror->methods()->all(Methods::ofClass()), $out, $separator);
     $this->displayMembers($this->mirror->methods()->all(Methods::ofInstance()), $out, $separator);
     $out->writeLine('}');
 }