Beispiel #1
0
 public function compile()
 {
     $containerBuilder = new UnfreezableContainerBuilder();
     foreach (ExtensionRepository::findAll() as $extension) {
         $containerBuilder->registerExtension($extension);
     }
     foreach ($containerBuilder->getExtensions() as $extension) {
         /* @var $extension \Symfony\Component\DependencyInjection\Extension\ExtensionInterface */
         $containerBuilder->loadFromExtension($extension->getAlias(), array());
     }
     $containerBuilder->getCompilerPassConfig()->setOptimizationPasses(array_filter($containerBuilder->getCompilerPassConfig()->getOptimizationPasses(), function (CompilerPassInterface $compilerPass) {
         return !$compilerPass instanceof ResolveParameterPlaceHoldersPass;
     }));
     $compiler = new \Stagehand\ComponentFactory\Compiler($containerBuilder, self::COMPILED_CONTAINER_CLASS, self::COMPILED_CONTAINER_NAMESPACE);
     file_put_contents(__DIR__ . '/' . self::COMPILED_CONTAINER_CLASS . '.php', $compiler->compile());
 }
 public function compile()
 {
     foreach (PluginRepository::findAll() as $plugin) {
         $containerBuilder = new UnfreezableContainerBuilder();
         $containerBuilder->registerExtension(new GeneralExtension());
         $extensionClass = new \ReflectionClass('Stagehand\\TestRunner\\DependencyInjection\\Extension\\' . $plugin->getPluginID() . 'Extension');
         if (!$extensionClass->isInterface() && !$extensionClass->isAbstract() && $extensionClass->isSubclassOf('Symfony\\Component\\DependencyInjection\\Extension\\ExtensionInterface')) {
             $containerBuilder->registerExtension($extensionClass->newInstance());
         }
         foreach ($containerBuilder->getExtensions() as $extension) {
             /* @var $extension \Symfony\Component\DependencyInjection\Extension\ExtensionInterface */
             $containerBuilder->loadFromExtension($extension->getAlias(), array());
         }
         $containerBuilder->addCompilerPass(new ReplaceDefinitionByPluginDefinitionPass($plugin));
         $containerBuilder->getCompilerPassConfig()->setOptimizationPasses(array_filter($containerBuilder->getCompilerPassConfig()->getOptimizationPasses(), function (CompilerPassInterface $compilerPass) {
             return !$compilerPass instanceof ResolveParameterPlaceHoldersPass;
         }));
         $containerClass = $plugin->getPluginID() . 'Container';
         $compiler = new \Stagehand\ComponentFactory\Compiler($containerBuilder, $containerClass, self::COMPILED_CONTAINER_NAMESPACE);
         $containerSource = $compiler->compile();
         file_put_contents(__DIR__ . '/../' . $containerClass . '.php', $containerSource);
     }
 }