/** * {@inheritdoc} */ protected function match(AcceptHeader $acceptLanguage, AcceptHeader $priority, $index) { if (!$acceptLanguage instanceof AcceptLanguage || !$priority instanceof AcceptLanguage) { return null; } $ab = $acceptLanguage->getBasePart(); $pb = $priority->getBasePart(); $as = $acceptLanguage->getSubPart(); $ps = $priority->getSubPart(); $baseEqual = !strcasecmp($ab, $pb); $subEqual = !strcasecmp($as, $ps); if (($ab == '*' || $baseEqual) && ($as === null || $subEqual)) { $score = 10 * $baseEqual + $subEqual; return new Match($acceptLanguage->getQuality() * $priority->getQuality(), $score, $index); } return null; }
/** * {@inheritdoc} */ protected function match(AcceptHeader $accept, AcceptHeader $priority, $index) { if (!$accept instanceof Accept || !$priority instanceof Accept) { return null; } $ab = $accept->getBasePart(); $pb = $priority->getBasePart(); $as = $accept->getSubPart(); $ps = $priority->getSubPart(); $intersection = array_intersect_assoc($accept->getParameters(), $priority->getParameters()); $baseEqual = !strcasecmp($ab, $pb); $subEqual = !strcasecmp($as, $ps); if (($ab === '*' || $baseEqual) && ($as === '*' || $subEqual) && count($intersection) === count($accept->getParameters())) { $score = 100 * $baseEqual + 10 * $subEqual + count($intersection); return new Match($accept->getQuality() * $priority->getQuality(), $score, $index); } return null; }