/** * Gets a single class generated by the template. * * @param Class_ $statement * @param string $namespace * @param string $fileLocation * @param string $uses * @returns string $code */ protected function getClass(Class_ $statement, $namespace, $fileLocation, $uses = '') { $comments = $statement->getDocComment(); $comments = isset($comments) ? $comments->getText() : ''; if ($namespace == 'tmp') { $namespace = ''; } else { $namespace = 'namespace ' . $namespace . ';'; } $event = new GetClassEvent($statement, $fileLocation, $namespace, $uses); $this->dispatcher->dispatch(GetClassEvent::BEFORE, $event); $namespace = $event->getNamespace(); $uses = $event->getUses(); $statement = $event->getStatements(); $code = $this->prettyPrinter->pStmt_Class($statement); if (isset($this->template)) { $code = call_user_func($this->template, $namespace, $uses, $comments, $code); } $event->setCode($code); $this->dispatcher->dispatch(GetClassEvent::AFTER, $event); $code = $event->getCode(); return $code; }