From 85f9ffd86cf225bd5143d0b2373694fe6a9be5cd Mon Sep 17 00:00:00 2001 From: Alexander Dmitryuk Date: Sun, 13 Nov 2022 22:16:03 +0600 Subject: [PATCH] DoctrineHelper::createAnnotationMetadataConfiguration not resolving vendor folder correctly (#126) * DoctrineHelper::createAnnotationMetadataConfiguration not resolving vendor from auditor-bundle * phpstan Co-authored-by: a.dmitryuk Co-authored-by: Damien Harper --- .../Doctrine/Persistence/Helper/DoctrineHelper.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Provider/Doctrine/Persistence/Helper/DoctrineHelper.php b/src/Provider/Doctrine/Persistence/Helper/DoctrineHelper.php index efa687e6..95e88d49 100644 --- a/src/Provider/Doctrine/Persistence/Helper/DoctrineHelper.php +++ b/src/Provider/Doctrine/Persistence/Helper/DoctrineHelper.php @@ -4,6 +4,7 @@ namespace DH\Auditor\Provider\Doctrine\Persistence\Helper; +use Composer\Autoload\ClassLoader; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Query\QueryBuilder; use Doctrine\DBAL\Result; @@ -18,6 +19,7 @@ use Doctrine\ORM\ORMSetup; use Doctrine\ORM\Tools\Setup; use InvalidArgumentException; +use ReflectionClass; /** * @see \DH\Auditor\Tests\Provider\Doctrine\Persistence\Helper\DoctrineHelperTest @@ -145,7 +147,7 @@ public static function createAttributeMetadataConfiguration(array $paths, bool $ public static function createAnnotationMetadataConfiguration(array $paths, bool $isDevMode = false): Configuration { if (class_exists(ORMSetup::class)) { - require_once __DIR__.'/../../../../../vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php'; + require_once self::getVendorDir().'/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php'; return ORMSetup::createAnnotationMetadataConfiguration($paths, $isDevMode); } @@ -157,4 +159,13 @@ public static function getEntityManagerFromOnFlushEventArgs(OnFlushEventArgs $ar { return method_exists($args, 'getObjectManager') ? $args->getObjectManager() : $args->getEntityManager(); } + + public static function getVendorDir(): string + { + $reflection = new ReflectionClass(ClassLoader::class); + $filename = $reflection->getFileName(); + \assert(\is_string($filename)); + + return \dirname($filename, 2); + } }