vendor/willdurand/hateoas/src/Configuration/Metadata/Driver/ExtensionDriver.php line 32

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Hateoas\Configuration\Metadata\Driver;
  4. use Hateoas\Configuration\Metadata\ClassMetadata;
  5. use Hateoas\Configuration\Metadata\ConfigurationExtensionInterface;
  6. use Metadata\ClassMetadata as JMSClassMetadata;
  7. use Metadata\Driver\DriverInterface;
  8. class ExtensionDriver implements DriverInterface
  9. {
  10.     /**
  11.      * @var DriverInterface
  12.      */
  13.     private $delegate;
  14.     /**
  15.      * @var ConfigurationExtensionInterface[]
  16.      */
  17.     private $extensions;
  18.     public function __construct(DriverInterface $delegate, array $extensions = [])
  19.     {
  20.         $this->delegate   $delegate;
  21.         $this->extensions $extensions;
  22.     }
  23.     public function loadMetadataForClass(\ReflectionClass $class): ?JMSClassMetadata
  24.     {
  25.         $metadata    $this->delegate->loadMetadataForClass($class);
  26.         $newMetadata false;
  27.         if (empty($this->extensions)) {
  28.             return $metadata;
  29.         }
  30.         if (null === $metadata) {
  31.             $metadata    = new ClassMetadata($class->getName());
  32.             $newMetadata true;
  33.         }
  34.         foreach ($this->extensions as $extension) {
  35.             $extension->decorate($metadata);
  36.         }
  37.         if ($newMetadata && count($metadata->getRelations()) < 1) {
  38.             $metadata null;
  39.         }
  40.         return $metadata;
  41.     }
  42.     public function registerExtension(ConfigurationExtensionInterface $extension): void
  43.     {
  44.         $this->extensions[] = $extension;
  45.     }
  46. }