public static function compare(Link
$a, Link
$b) { // Any string concatenation would work, but a Link header-like format makes
// it clear what is being compared.
$a_string =
sprintf('<%s>;rel="%s"',
$a->
getHref(),
$a->rel
);
$b_string =
sprintf('<%s>;rel="%s"',
$b->
getHref(),
$b->rel
);
$cmp =
strcmp($a_string,
$b_string);
// If the `href` or `rel` of the links are not equivalent, it's not
// necessary to compare target attributes.
if ($cmp === 0
) { return (int) !
empty(DiffArray::
diffAssocRecursive($a->
getTargetAttributes(),
$b->
getTargetAttributes()));
} return $cmp;
} /**
* Merges two equivalent links into one link with the merged cacheability.
*
* The links must share the same URI, link relation type and attributes.
*
* @param \Drupal\jsonapi\JsonApiResource\Link $a
* The first link.
* @param \Drupal\jsonapi\JsonApiResource\Link $b
* The second link.
*
* @return static
* A new JSON:API Link object with the cacheability of both links merged.
*/