Esempio n. 1
0
 /**
  * Return a ClassGenerator
  *
  * @param BaseBundle $bundleInfos
  * @param string $class Class name
  * @param string $interface Interface to use, just class name
  * @return ClassGenerator
  */
 protected function initGenerator(BaseBundle $bundleInfos, $class, $interface)
 {
     $return = new ClassGenerator();
     $return->setClassName($class);
     $return->setNamespace($bundleInfos->getNamespace() . '\\Service\\Install');
     $return->setTraits(array('kujaff\\VersionsBundle\\Model\\BundleNameFromClassName', 'kujaff\\VersionsBundle\\Model\\DoctrineHelper'));
     $return->setExtends('Symfony\\Component\\DependencyInjection\\ContainerAware');
     $return->addUse('kujaff\\VersionsBundle\\Model\\' . $interface, 'Base' . $interface);
     $return->addInterface('Base' . $interface);
     $return->setConcatTraits(true);
     return $return;
 }
 /**
  * Generate full \Service class, with all services as methods
  *
  * @throws ServicesNotFoundException
  */
 protected function generateFullServicesShortcuts()
 {
     $cachedFile = $this->container->getParameter('debug.container.dump');
     if (!is_file($cachedFile)) {
         throw new ServicesNotFoundException('Service list not found. Parameter "debug.container.dump" doesn\'t exists. Try to clear cache and try again.');
     }
     $builder = new ContainerBuilder();
     $loader = new XmlFileLoader($builder, new FileLocator());
     $loader->load($cachedFile);
     $generator = new ClassGenerator();
     $generator->setExtractUses(false);
     $generator->setClassName('Service');
     foreach ($builder->getServiceIds() as $id) {
         if (preg_match('/^[a-zA-Z]{1}/', $id) === false) {
             continue;
         } else {
             if ($builder->hasDefinition($id)) {
                 $definition = $builder->getDefinition($id);
             } else {
                 if ($builder->hasAlias($id)) {
                     $alias = $builder->getAlias($id);
                     $definition = $builder->getDefinition($alias);
                 } else {
                     continue;
                 }
             }
         }
         if ($definition->isPublic()) {
             $method = new Method(str_replace('.', '__', $id));
             $method->setIsStatic(true);
             $method->setReturn($this->getServiceClass($id, $definition));
             $method->addLine('return _service(\'' . $id . '\');');
             $generator->addMethod($method);
         }
     }
     $generator->write($this->getFileName());
 }