Exemplo n.º 1
0
 /**
  * @param \Protobuf\Compiler\Entity $entity
  *
  * @return bool
  */
 protected function loadEntityClass(Entity $entity)
 {
     $type = $entity->getType();
     $content = $entity->getContent();
     $class = $entity->getNamespacedName();
     if (class_exists($class) || interface_exists($class)) {
         return false;
     }
     $this->logger->info(sprintf('Loading class "%s"', $class));
     $tempname = tempnam(sys_get_temp_dir(), 'proto') . '.php';
     file_put_contents($tempname, $content);
     include $tempname;
     @unlink($tempname);
     if ($type === Entity::TYPE_EXTENSION) {
         $this->logger->info(sprintf('Registering extension "%s"', $class));
         $config = $this->config;
         $registry = $config->getExtensionRegistry();
         $class::registerAllExtensions($registry);
         return true;
     }
     return false;
 }