Пример #1
0
 /**
  * @param Type $type
  * @return Result
  */
 public function compile(Type $type)
 {
     if ($type->isAbstract()) {
         return null;
     }
     foreach ($this->matchers as $matcher) {
         if (!$matcher->matches($type)) {
             continue;
         }
         foreach ($matcher->getModules() as $module) {
             $module->onBeforeGenerate($this, $matcher, $type);
         }
         $file = new PhpFile();
         $class = $this->createMetaClass($type, $file);
         foreach ($matcher->getModules() as $module) {
             $module->onGenerate($this, $matcher, $type, $class);
         }
         return new Result($file, $class);
     }
     return null;
 }