Add VersionedResourcePass to compiler resource names into lock file

This commit is contained in:
2024-04-23 11:10:37 +02:00
parent a7fea45e0b
commit 0fcc0aaf33
2 changed files with 45 additions and 0 deletions
@@ -0,0 +1,39 @@
<?php
namespace App\DependencyInjection\Compiler;
use App\Service\ApiResourceNormalizer;
use App\Service\VersionedResourceService;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class VersionedResourcePass implements CompilerPassInterface
{
public function process(ContainerBuilder $container): void
{
$allClasses = \get_declared_classes();
$entityClasses = \array_filter($allClasses, function (string $className) {
return \str_starts_with($className, 'App\\Entity\\');
});
$versionedResourceNames = [];
foreach ($entityClasses as $entityClass) {
$reflectionClass = new \ReflectionClass($entityClass);
$attributes = $reflectionClass->getAttributes(Gedmo\Loggable::class);
if (empty($attributes)) {
continue;
}
$versionedResourceNames = [
...$versionedResourceNames,
ApiResourceNormalizer::toResource($entityClass)
];
}
/** @var VersionedResourceService */
$versionedResourceService = $container->get(VersionedResourceService::class);
$versionedResourceService->compileNames($versionedResourceNames);
}
}
+6
View File
@@ -3,6 +3,7 @@
namespace App;
use App\DependencyInjection\Compiler\GatewayPass;
use App\DependencyInjection\Compiler\VersionedResourcePass;
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\DependencyInjection\Compiler\PassConfig;
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -18,5 +19,10 @@ class Kernel extends BaseKernel
new GatewayPass,
PassConfig::TYPE_AFTER_REMOVING
);
$container->addCompilerPass(
new VersionedResourcePass,
PassConfig::TYPE_AFTER_REMOVING
);
}
}