From 01c0eb8fd919cec2423c4580522879bc0d31d10d Mon Sep 17 00:00:00 2001 From: Dorian Savina Date: Thu, 31 Dec 2020 13:01:33 +0100 Subject: [PATCH] [generation] add method annotations in iterator generated classes Signed-off-by: Dorian Savina --- src/Utils/BeanDescriptor.php | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/Utils/BeanDescriptor.php b/src/Utils/BeanDescriptor.php index b66605cf..1eb83e27 100644 --- a/src/Utils/BeanDescriptor.php +++ b/src/Utils/BeanDescriptor.php @@ -1156,9 +1156,10 @@ public function generateResultIteratorPhpCode(): ?FileGenerator $tableName = $this->table->getName(); $className = $this->namingStrategy->getResultIteratorClassName($tableName); + $classFullName = $this->resultIteratorNamespace.'\\'.$className; $baseClassName = $this->namingStrategy->getBaseResultIteratorClassName($tableName); - $beanClassWithoutNameSpace = $this->namingStrategy->getBeanClassName($tableName); - $beanClassName = $this->beanNamespace.'\\'.$beanClassWithoutNameSpace; + $beanClassName = $this->namingStrategy->getBeanClassName($tableName); + $beanClassFullName = $this->beanNamespace.'\\'.$beanClassName; $file->setDocBlock(new DocBlockGenerator( <<addUse(ResultIterator::class); + + $uses = [ResultIterator::class, $classFullName, $beanClassFullName]; + sort($uses); + foreach ($uses as $use) { + $class->addUse($use); + } + $class->setName($baseClassName); $class->setExtendedClass(ResultIterator::class); $class->setDocBlock((new DocBlockGenerator( - "The $baseClassName class will iterate over results of $beanClassWithoutNameSpace class.", + "The $baseClassName class will iterate over results of $beanClassName class.", null, - [new Tag\MethodTag('getIterator', ['\\' . $beanClassName . '[]'])] + [ + new Tag\MethodTag('first', [$beanClassName]), + new Tag\MethodTag('offsetGet', [$beanClassName]), + new Tag\MethodTag('getIterator', [$beanClassName . '[]']), + new Tag\MethodTag('toArray', [$beanClassName . '[]']), + new Tag\MethodTag('withOrder', [$className]), + new Tag\MethodTag('withParameters', [$className]), + ] ))->setWordWrap(false)); $file = $this->codeGeneratorListener->onBaseResultIteratorGenerated($file, $this, $this->configuration);