コード例 #1
0
 /**
  * Returns Field instances for all non-static fields of the given class
  * and the traits it uses.
  *
  * @param  lang.mirrors.TypeMirror $mirror
  * @return php.Generator
  */
 protected function instanceFields($mirror)
 {
     $seen = [];
     foreach ($mirror->fields()->of(Member::$INSTANCE | Member::$DECLARED) as $field) {
         $seen[$field->name()] = true;
         (yield $field);
     }
     foreach ($mirror->traits() as $trait) {
         foreach ($trait->fields()->of(Member::$INSTANCE) as $field) {
             if (!isset($seen[$field->name()])) {
                 (yield $field);
             }
         }
     }
 }
コード例 #2
0
 /**
  * Returns declaration
  *
  * @param  lang.mirrors.TypeMirror $mirror
  * @return string
  */
 protected static function declarationOf($mirror)
 {
     switch ($mirror->kind()) {
         case Kind::$ENUM:
             return $mirror->modifiers()->names() . ' enum ' . $mirror->name();
             break;
         case Kind::$TRAIT:
             return 'public trait ' . $mirror->name();
             break;
         case Kind::$INTERFACE:
             return 'public interface ' . $mirror->name();
             break;
         case Kind::$CLASS:
             return $mirror->modifiers()->names() . ' class ' . $mirror->name();
             break;
         default:
             throw new IllegalStateException('Unknown kind ' . $mirror->kind()->name());
     }
 }
コード例 #3
0
ファイル: Builder.class.php プロジェクト: xp-forge/partial
 /**
  * Creates trait body
  *
  * @param  lang.mirrors.TypeMirror $mirror
  * @return string
  */
 protected function body($mirror)
 {
     return '/** @return lang.partial.InstanceCreation */ public static function with() {
   return \\lang\\partial\\InstanceCreation::of(new \\lang\\XPClass(\'' . strtr($mirror->name(), '.', '\\') . '\'));
 }';
 }