public function process(ContainerBuilder $container) { $reader = $container->get('annotation_reader'); $factory = $container->get('jms_di_extra.metadata.metadata_factory'); $converter = $container->get('jms_di_extra.metadata.converter'); $disableGrep = $container->getParameter('jms_di_extra.disable_grep'); $directories = $this->getScanDirectories($container); if (!$directories) { $container->getCompiler()->addLogMessage('No directories configured for AnnotationConfigurationPass.'); return; } $finder = new PatternFinder('JMS\\DiExtraBundle\\Annotation', '*.php', $disableGrep); $files = $finder->findFiles($directories); $container->addResource(new ServiceFilesResource($files, $directories, $disableGrep)); foreach ($files as $file) { $container->addResource(new FileResource($file)); require_once $file; $className = $this->getClassName($file); if (null === ($metadata = $factory->getMetadataForClass($className))) { continue; } if (null === $metadata->getOutsideClassMetadata()->id) { continue; } foreach ($converter->convert($metadata) as $id => $definition) { $container->setDefinition($id, $definition); } } }
/** * @param ContainerBuilder $container * @param string[] $directories * @param string $pattern * @param AdvancedMetadataFactoryInterface $factory * @param MetadataConverter $converter * @param bool $disableGrep */ private function handlePattern(ContainerBuilder $container, $directories, $pattern, $factory, $converter, $disableGrep) { $finder = new PatternFinder($pattern, '*.php', $disableGrep); $files = $finder->findFiles($directories); $container->addResource(new ServiceFilesResource($files, $directories, $disableGrep)); foreach ($files as $file) { $container->addResource(new FileResource($file)); require_once $file; $className = $this->getClassName($file); if (null === ($metadata = $factory->getMetadataForClass($className))) { continue; } if (null === $metadata->getOutsideClassMetadata()->id) { continue; } if (!$metadata->getOutsideClassMetadata()->isLoadedInEnvironment($container->getParameter('kernel.environment'))) { continue; } foreach ($converter->convert($metadata) as $id => $definition) { $container->setDefinition($id, $definition); } } }
public function isFresh($timestamp) { $finder = new PatternFinder($this->pattern, '*.php', $this->disableGrep); $files = $finder->findFiles($this->dirs); return !array_diff($files, $this->files) && !array_diff($this->files, $files); }
/** * @param $container * @return ServiceWrapperHelper[] */ public function findFiles($container) { $directories = array(); $bundles = $container->getParameter('kernel.bundles'); foreach ($bundles as $name => $className) { if ('NfxAsyncBundle' === $name) { // continue; } $bundleClass = new \ReflectionClass($className); $directories[] = dirname($bundleClass->getFileName()); } $finder = new PatternFinder('Nfx\\AsyncBundle\\Annotation'); $files = $finder->findFiles($directories); $files = array_flip($files); $possibleServices = array(); foreach ($container->getDefinitions() as $definitionId => $definition) { if (!class_exists($definition->getClass())) { continue; } $reflection = new \ReflectionClass($definition->getClass()); if (empty($files[$reflection->getFileName()])) { continue; } $possibleServices[$definitionId] = new ServiceWrapperHelper($reflection, $definition, $definitionId); } return $possibleServices; }
public function isFresh($timestamp) { $finder = new PatternFinder('JMS\\DiExtraBundle\\Annotation'); $files = $finder->findFiles($this->dirs); return !array_diff($files, $this->files) && !array_diff($this->files, $files); }