<?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, function (LinkInterface $item) { 
            return true; 
        }); 
 
        $hashes = array_map('spl_object_hash', $links); 
        $this->links = array_combine($hashes, $links); 
    } 
}