/** * @param string $name * @param CertificationContext $context * @param string[] $providers * * @return Certification * @throws \Exception */ public function createNamed($name, CertificationContext $context, array $providers) { if (empty($providers)) { $exception = new \Exception('You must define at least one provider'); if (null !== $this->logger) { $this->logger->critical(sprintf('Impossible to generate certification %s, following error : "%s"', $name, $exception->getMessage())); } throw $exception; } if ($name !== $context->getName()) { $exception = new \Exception(sprintf('The current certification context is not for certification call %s', $name)); if (null !== $this->logger) { $this->logger->critical(sprintf('Impossible to generate certification %s, following error : "%s"', $name, $exception->getMessage())); } throw $exception; } //Avoid to regenerate certification previously generated if (null !== $this->loader && false === $context->getDebug()) { try { if (null !== $this->logger) { $this->logger->debug(sprintf('Certification %s loaded from previous dump via %s', $name, get_class($this->loader))); } return $this->loader->load($name); } catch (NotAlreadyDumpedException $e) { if (null !== $this->logger) { $this->logger->debug(sprintf('Certification %s will be fully generated', $name)); } } } //Check if required provider are loads foreach ($providers as $provider) { if (!$this->providerRegistry->isRegister($provider)) { $exception = new \Exception(sprintf('Provider %s is not registered. Did you mean %s', $provider, implode(', ', $this->providerRegistry->getRegistered()))); if (null !== $this->logger) { $this->logger->critical(sprintf('Impossible to generate certification %s, following error : "%s"', $name, $exception->getMessage())); } throw $exception; } $this->builder->addBuilderPass(new ProviderBuilderPass($this->providerRegistry->getProvider($provider))); } $certification = $this->builder->build($context); //Dump for next usage if (false === $context->getDebug() && null !== $this->dumper) { if (null !== $this->logger) { $this->logger->debug(sprintf('Dump certification %s via : %s', $name, get_class($this->dumper))); } $this->dumper->dump($certification, $context); } return $certification; }
public function testCollector() { $builder = new Builder(); $this->assertInstanceOf('Certificationy\\Component\\Certy\\Collector\\CollectorInterface', $builder->getCollector()); }