vendor/easycorp/easyadmin-bundle/src/Registry/CrudControllerRegistry.php line 15

Open in your IDE?
  1. <?php
  2. namespace EasyCorp\Bundle\EasyAdminBundle\Registry;
  3. /**
  4.  * @author Javier Eguiluz <javier.eguiluz@gmail.com>
  5.  */
  6. final class CrudControllerRegistry
  7. {
  8.     private array $crudFqcnToEntityFqcnMap = [];
  9.     private array $entityFqcnToCrudFqcnMap;
  10.     private array $crudFqcnToCrudIdMap = [];
  11.     private array $crudIdToCrudFqcnMap;
  12.     public function __construct(string $kernelSecret, array $crudControllersFqcn)
  13.     {
  14.         foreach ($crudControllersFqcn as $controllerFqcn) {
  15.             $this->crudFqcnToEntityFqcnMap[$controllerFqcn] = $controllerFqcn::getEntityFqcn();
  16.             $this->crudFqcnToCrudIdMap[$controllerFqcn] = substr(sha1($kernelSecret.$controllerFqcn), 07);
  17.         }
  18.         // more than one controller can manage the same entity, so this map will
  19.         // only contain the last controller associated to that repeated entity. That's why
  20.         // several methods in other classes allow to define the CRUD controller explicitly
  21.         $this->entityFqcnToCrudFqcnMap array_flip($this->crudFqcnToEntityFqcnMap);
  22.         $this->crudIdToCrudFqcnMap array_flip($this->crudFqcnToCrudIdMap);
  23.     }
  24.     public function findCrudFqcnByEntityFqcn(string $entityFqcn): ?string
  25.     {
  26.         return $this->entityFqcnToCrudFqcnMap[$entityFqcn] ?? null;
  27.     }
  28.     public function findEntityFqcnByCrudFqcn(string $controllerFqcn): ?string
  29.     {
  30.         return $this->crudFqcnToEntityFqcnMap[$controllerFqcn] ?? null;
  31.     }
  32.     public function findCrudFqcnByCrudId(string $crudId): ?string
  33.     {
  34.         return $this->crudIdToCrudFqcnMap[$crudId] ?? null;
  35.     }
  36.     public function findCrudIdByCrudFqcn(string $controllerFqcn): ?string
  37.     {
  38.         return $this->crudFqcnToCrudIdMap[$controllerFqcn] ?? null;
  39.     }
  40. }