/** * @param ClassMetadataInfo $metadata * @param string $outputDir * @param Closure $collectionNameBuilder */ public function generate(ClassMetadataInfo $metadata, $outputDir, Closure $collectionNameBuilder) { $tpl = file_get_contents(CodeGeneratorHelper::absPath(EntityCollectionTemplate::class, RootPath::path())); $tplNs = CodeGeneratorHelper::ns(EntityCollectionTemplate::class); $tplSimpleName = CodeGeneratorHelper::simpleName(EntityCollectionTemplate::class); $entityFqcn = CodeGeneratorHelper::simpleName(EntityFqcn::class); $collectionClassName = $collectionNameBuilder($metadata->getName()); $code = CodeGeneratorHelper::render($tpl, array($tplNs => CodeGeneratorHelper::ns($collectionClassName), $tplSimpleName => CodeGeneratorHelper::simpleName($collectionClassName), $entityFqcn => CodeGeneratorHelper::fqn($metadata->getName()))); CodeGeneratorHelper::save($collectionClassName, $code, $outputDir); }
public function generate($fullClassName, $outputDir) { $fqn = CodeGeneratorHelper::fqn($fullClassName); $reflectionClass = new ReflectionClass($fullClassName); $ns = $reflectionClass->getName(); $methods = $reflectionClass->getMethods(ReflectionMethod::IS_PUBLIC); $code = []; foreach ($methods as $method) { /** @var ReflectionMethod $method */ $name = $method->getName(); if ($this->accept($method)) { list($hints, $uses, $applies) = $this->prepareHintUseApply($method); if ($method->isStatic()) { $code[] = sprintf(static::$fnStaticMethodTemplate, $name, $hints, $uses, $fqn, $name, $applies); } else { $code[] = sprintf(static::$fnInstanceMethodTemplate, $name, $hints, $fqn, $uses, $name, $applies); } } } $body = sprintf(static::$bodyTemplate, $ns, implode("\n", $code)); CodeGeneratorHelper::save("{$fullClassName}/Fn", $body, $outputDir); }
protected function writeQueryCollectionCondClass($metadatas, ClassMetadataInfo $metadata, $outputDirectory) { $fullClassName = $this->helper->getQueryCollectionCondClassNameByEntityClass($metadata->getName()); $code = $this->generateQueryCollectionCondClass($metadatas, $metadata); CodeGeneratorHelper::save($fullClassName, $code, $outputDirectory); }