<?php

namespace Fig\Link;

use Psr\Link\EvolvableLinkProviderInterface;
use Psr\Link\LinkInterface;

class GenericLinkProvider implements EvolvableLinkProviderInterface
{
    use EvolvableLinkProviderTrait;

    /**
     * Constructs a new link provider.
     *
     * @param LinkInterface[] $links
     *   Optionally, specify an initial set of links for this provider.
     *   Note that the keys of the array will be ignored.
     */
    public function __construct(array $links = [])
    {
        // This block will throw a type error if any item isn't a LinkInterface, by design.
        array_filter($links, fn(LinkInterface $item) => true);

        $hashes = array_map('spl_object_hash', $links);
        $this->links = array_combine($hashes, $links);
    }
}
