ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 安装 ``` composer require psr/link ``` ## 接口 <details> <summary>Psr\Link\LinkInterface </summary> ``` <?php namespace Psr\Link; /** * 一个可读的链接对象。 */ interface LinkInterface { /** * 返回链接的目标。 * * 目标链接必须是以下中的一个: * * - 一个绝对的 URI,由 RFC 5988 定义的。 * - 一个相对 URI,由 RFC 5988 定义的。相对链接的基础 * 被假定为基于客户端的上下文而已知。 * - 一个由 RFC 6570 定义的 URI 模板。 * * 如果返回一个 URI 模板,isTemplated 必须返回 True。 * * @return string */ public function getHref(); /** * 返回的是否为一个模板链接。 * * @return bool True 表示链接对象是模板, False 相反。 */ public function isTemplated(); /** * 返回链接的关系类型。 * * 此方法返回一个链接的 0 个或更多关系类型,返回值为 * 字符串数组。 * * @return string[] */ public function getRels(); /** * 返回描述目标 URI 的一个属性列表。 * * @return array * 属性的一个键值对列表,其中键是一个字符串,值要么是一个 PHP 原生提供的,要么是 PHP 字符串数组。 * 如果没有值,必须返回一个空的数组。 */ public function getAttributes(); } ``` </details> <br /> <details> <summary>Psr\Link\EvolvableLinkInterface</summary> ``` <?php namespace Psr\Link; /** * 一个可演进的值对象. */ interface EvolvableLinkInterface extends LinkInterface { /** * 返回一个指定的 href 实例。 * * @param string $href * 这个 href 值必须包括以下其中一项: * - 一个由 RFC 5988 定义的绝对 URI。 * - 一个由 RFC 5988 定义的相对 URI。相对链接的基准假设是由已知客户端基于上下文的。 * - 一个由 RFC 6570 定义的 URI 模板。 * - 一个实现 __toString() 方法的对象,它产生上述某个值。 * * 一个实现库应当立即将传递的对象评估为字符串,而不是等待它稍后返回。 * * @return static */ public function withHref($href); /** * 返回一个包含指定关系的实例。 * * 如果指定的 rel 已经存在,这个方法必须正常返回而没有错误,但不会再次添加 rel。 * * @param string $rel 要添加的关系值。 * * @return static */ public function withRel($rel); /** * 返回一个排除指定关系的实例。 * * 如果指定的 rel 已经不存在,这个方法必须正常返回而没有错误。 * * @param string $rel 要排除的关系值。 * * @return static */ public function withoutRel($rel); /** * 返回一个添加了指定属性的实例。 * * 如果指定的属性已经存在,那么属性的值将被新值覆盖。 * * @param string $attribute 包含的属性键名。 * @param string $value 属性待设置的值。 * * @return static */ public function withAttribute($attribute, $value); /** * 返回一个排除了指定属性的实例。 * * 如果指定的属性不存在,这个方法必须正常返回而没有错误。 * * @param string $attribute 移除的属性键名。 * * @return static */ public function withoutAttribute($attribute); } ``` </details> <br /> <details> <summary>Psr\Link\LinkProviderInterface </summary> ``` <?php namespace Psr\Link; /** * 一个链接提供者对象. */ interface LinkProviderInterface { /** * 返回一个可迭代的 LinkInterface 对象。 * * 迭代可能是一个数组或者任何实现 PHP \Traversable 接口的对象。 * 如果没有可用的链接,一个空的数组或者实现 \Traversable 接口的 * 对象必须被返回。 * * @return LinkInterface[]|\Traversable */ public function getLinks(); /** * 返回一个指定关系的可迭代 LinkInterface 对象。 * * 迭代可能是一个数组或者任何实现 PHP \Traversable 接口的对象。 * 如果没有与该关系的链接是可用的,一个空的数组或者实现 \Traversable * 接口的对象必须被返回。 * * @return LinkInterface[]|\Traversable */ public function getLinksByRel($rel); } ``` </details> <br /> <details> <summary>Psr\Link\EvolvableLinkProviderInterface</summary> ``` <?php namespace Psr\Link; /** * 一个可演进的链接提供者值对象. */ interface EvolvableLinkProviderInterface extends LinkProviderInterface { /** * 返回一个包含指定链接的实例。 * * 如果指定的链接已经存在,这个方法必须正常返回而没有错误。 * 如果 $link 全等于(===)集合中已有的 link 对象,则链接存在。 * * @param LinkInterface $link 应该包含在此集合中的链接对象。 * * @return static */ public function withLink(LinkInterface $link); /** * 返回一个移除指定链接的实例。 * * 如果指定的链接不存在,这个方法必须正常返回而没有错误。 * 如果 $link 全等于(===)集合中已有的 link 对象,则链接存在。 * * @param LinkInterface $link 移除的链接。 * * @return static */ public function withoutLink(LinkInterface $link); } ``` </details> <br />