Add VersionedResourcePass to compiler resource names into lock file
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user