vendor/symfony/web-link/GenericLinkProvider.php line 17

  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\WebLink;
  11. use Psr\Link\EvolvableLinkProviderInterface;
  12. use Psr\Link\LinkInterface;
  13. class GenericLinkProvider implements EvolvableLinkProviderInterface
  14. {
  15.     /**
  16.      * @var LinkInterface[]
  17.      */
  18.     private array $links = [];
  19.     /**
  20.      * @param LinkInterface[] $links
  21.      */
  22.     public function __construct(array $links = [])
  23.     {
  24.         $that $this;
  25.         foreach ($links as $link) {
  26.             $that $that->withLink($link);
  27.         }
  28.         $this->links $that->links;
  29.     }
  30.     public function getLinks(): array
  31.     {
  32.         return array_values($this->links);
  33.     }
  34.     public function getLinksByRel(string $rel): array
  35.     {
  36.         $links = [];
  37.         foreach ($this->links as $link) {
  38.             if (\in_array($rel$link->getRels())) {
  39.                 $links[] = $link;
  40.             }
  41.         }
  42.         return $links;
  43.     }
  44.     public function withLink(LinkInterface $link): static
  45.     {
  46.         $that = clone $this;
  47.         $that->links[spl_object_id($link)] = $link;
  48.         return $that;
  49.     }
  50.     public function withoutLink(LinkInterface $link): static
  51.     {
  52.         $that = clone $this;
  53.         unset($that->links[spl_object_id($link)]);
  54.         return $that;
  55.     }
  56. }