/** * Add a report generator. * * @param string $name * @param GeneratorInterface $generator */ public function addGenerator($name, GeneratorInterface $generator) { if (isset($this->generators[$name])) { throw new \InvalidArgumentException(sprintf('Report generator with name "%s" has already been registered', $name)); } $this->generators[$name] = $generator; $defaultReports = $generator->getDefaultReports(); if (!is_array($defaultReports)) { throw new \RuntimeException(sprintf('Method getDefaultReports on report generator "%s" must return an array, it is returning: "%s"', get_class($generator), is_object($defaultReports) ? get_class($defaultReports) : gettype($defaultReports))); } foreach ($defaultReports as $reportName => $reportConfig) { $reportConfig['generator'] = $name; $this->addReport($reportName, $reportConfig); } }