Source of file EntityClassGenerator.php
Size: 2,545 Bytes - Last Modified: 2023-11-16T22:56:03+01:00
/home/websites/teicee/packagist/site/phpdoc/conf/../vendor/teicee/make-bundle/src/Doctrine/EntityClassGenerator.php
| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | <?phpnamespace TIC\MakeBundle\Doctrine; use Symfony\Bundle\MakerBundle\Generator; use Symfony\Bundle\MakerBundle\Str; use Symfony\Bundle\MakerBundle\Util\ClassNameDetails; use Symfony\Bundle\MakerBundle\Doctrine\DoctrineHelper; use Doctrine\Common\Persistence\ManagerRegistry as LegacyManagerRegistry; /** * @internal */final class EntityClassGenerator {protected $skelPath = __DIR__.'/../Resources/skeleton/'; private $generator; private $doctrineHelper; private $managerRegistryClassName = LegacyManagerRegistry::class; public function __construct(Generator $generator, DoctrineHelper $doctrineHelper) { $this->generator = $generator; $this->doctrineHelper = $doctrineHelper; } /** * */public function generateEntityClass(ClassNameDetails $entityDetails, ?string $tableName, ?bool $generateRepo = false): string { if (! $tableName) { # $tableName = $this->doctrineHelper->getPotentialTableName($entityDetails->getFullName());$tableBase = str_replace("\\", "", str_replace("\\Entity\\", "", $entityDetails->getFullName())); $tableName = $this->doctrineHelper->getPotentialTableName($tableBase); } $repoDetails = $this->generator->createClassNameDetails($entityDetails->getRelativeName(), "Repository\\", "Repository"); $entityPath = $this->generator->generateClass( $entityDetails->getFullName(), $this->skelPath . 'doctrine/Entity.tpl.php', [ 'table_name' => $tableName, 'repo_name' => $repoDetails->getShortName(), 'repo_class' => $repoDetails->getFullName(), ] ); if ($generateRepo) $this->generateRepositoryClass($repoDetails, $entityDetails); return $entityPath; } /** * */public function generateRepositoryClass(ClassNameDetails $repositoryDetails, ClassNameDetails $entityDetails) { # $entityAlias = strtolower(substr($entityDetails->getShortName(),0,1));$entityAlias = strtolower(preg_replace('/[^A-Z]/', '', $entityDetails->getShortName())); $this->generator->generateClass( $repositoryDetails->getFullName(), $this->skelPath . 'doctrine/Repository.tpl.php', [ 'entity_class' => $entityDetails->getFullName(), 'entity_name' => $entityDetails->getShortName(), 'entity_alias' => $entityAlias, 'registry_class' => $this->managerRegistryClassName, ] ); } /** * Called by a compiler pass to inject the non-legacy value if available. */public function setManagerRegistryClassName(string $managerRegistryClassName) { $this->managerRegistryClassName = $managerRegistryClassName; } } |