vendor/api-platform/core/src/Metadata/Link.php line 17

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the API Platform project.
  4.  *
  5.  * (c) Kévin Dunglas <[email protected]>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. declare(strict_types=1);
  11. namespace ApiPlatform\Metadata;
  12. #[\Attribute(\Attribute::TARGET_PROPERTY \Attribute::TARGET_METHOD \Attribute::TARGET_PARAMETER)]
  13. final class Link
  14. {
  15.     private $parameterName;
  16.     private $fromProperty;
  17.     private $toProperty;
  18.     private $fromClass;
  19.     private $toClass;
  20.     private $identifiers;
  21.     private $compositeIdentifier;
  22.     private $expandedValue;
  23.     public function __construct(?string $parameterName null, ?string $fromProperty null, ?string $toProperty null, ?string $fromClass null, ?string $toClass null, ?array $identifiers null, ?bool $compositeIdentifier null, ?string $expandedValue null)
  24.     {
  25.         // For the inverse property shortcut
  26.         if ($parameterName && class_exists($parameterName)) {
  27.             $this->fromClass $parameterName;
  28.         } else {
  29.             $this->parameterName $parameterName;
  30.         }
  31.         $this->fromClass $fromClass;
  32.         $this->toClass $toClass;
  33.         $this->fromProperty $fromProperty;
  34.         $this->toProperty $toProperty;
  35.         $this->identifiers $identifiers;
  36.         $this->compositeIdentifier $compositeIdentifier;
  37.         $this->expandedValue $expandedValue;
  38.     }
  39.     public function getParameterName(): ?string
  40.     {
  41.         return $this->parameterName;
  42.     }
  43.     public function withParameterName(string $parameterName): self
  44.     {
  45.         $self = clone $this;
  46.         $self->parameterName $parameterName;
  47.         return $self;
  48.     }
  49.     public function getFromClass(): ?string
  50.     {
  51.         return $this->fromClass;
  52.     }
  53.     public function withFromClass(string $fromClass): self
  54.     {
  55.         $self = clone $this;
  56.         $self->fromClass $fromClass;
  57.         return $self;
  58.     }
  59.     public function getToClass(): ?string
  60.     {
  61.         return $this->toClass;
  62.     }
  63.     public function withToClass(string $toClass): self
  64.     {
  65.         $self = clone $this;
  66.         $self->toClass $toClass;
  67.         return $self;
  68.     }
  69.     public function getFromProperty(): ?string
  70.     {
  71.         return $this->fromProperty;
  72.     }
  73.     public function withFromProperty(string $fromProperty): self
  74.     {
  75.         $self $this;
  76.         $self->fromProperty $fromProperty;
  77.         return $self;
  78.     }
  79.     public function getToProperty(): ?string
  80.     {
  81.         return $this->toProperty;
  82.     }
  83.     public function withToProperty(string $toProperty): self
  84.     {
  85.         $self = clone $this;
  86.         $self->toProperty $toProperty;
  87.         return $self;
  88.     }
  89.     public function getIdentifiers(): ?array
  90.     {
  91.         return $this->identifiers;
  92.     }
  93.     public function withIdentifiers(array $identifiers): self
  94.     {
  95.         $self = clone $this;
  96.         $self->identifiers $identifiers;
  97.         return $self;
  98.     }
  99.     public function getCompositeIdentifier(): ?bool
  100.     {
  101.         return $this->compositeIdentifier;
  102.     }
  103.     public function withCompositeIdentifier(bool $compositeIdentifier): self
  104.     {
  105.         $self = clone $this;
  106.         $self->compositeIdentifier $compositeIdentifier;
  107.         return $self;
  108.     }
  109.     public function getExpandedValue(): ?string
  110.     {
  111.         return $this->expandedValue;
  112.     }
  113.     public function withExpandedValue(string $expandedValue): self
  114.     {
  115.         $self = clone $this;
  116.         $self->expandedValue $expandedValue;
  117.         return $self;
  118.     }
  119.     public function withLink(self $link): self
  120.     {
  121.         $self = clone $this;
  122.         if (!$self->getToProperty() && ($toProperty $link->getToProperty())) {
  123.             $self->toProperty $toProperty;
  124.         }
  125.         if (!$self->getCompositeIdentifier() && ($compositeIdentifier $link->getCompositeIdentifier())) {
  126.             $self->compositeIdentifier $compositeIdentifier;
  127.         }
  128.         if (!$self->getFromClass() && ($fromClass $link->getFromClass())) {
  129.             $self->fromClass $fromClass;
  130.         }
  131.         if (!$self->getToClass() && ($toClass $link->getToClass())) {
  132.             $self->toClass $toClass;
  133.         }
  134.         if (!$self->getIdentifiers() && ($identifiers $link->getIdentifiers())) {
  135.             $self->identifiers $identifiers;
  136.         }
  137.         if (!$self->getFromProperty() && ($fromProperty $link->getFromProperty())) {
  138.             $self->fromProperty $fromProperty;
  139.         }
  140.         if (!$self->getParameterName() && ($parameterName $link->getParameterName())) {
  141.             $self->parameterName $parameterName;
  142.         }
  143.         if (!$self->getExpandedValue() && ($expandedValue $link->getExpandedValue())) {
  144.             $self->expandedValue $expandedValue;
  145.         }
  146.         return $self;
  147.     }
  148. }