uriTemplate = new UriTemplate(); } public function matchAll(array $topics, array $claims): bool { $matched = 0; foreach ((array)$topics as $match) { foreach ($claims as $claim) { if (($claim === "*") || ($claim === $match) || ($this->uriTemplate->extract($claim, $match, true))) { $matched++; break; } } } return ($matched == count($topics)); } public function matchOne(array $topics, array $claims): bool { foreach ((array)$topics as $match) { foreach ($claims as $claim) { if (($claim === "*") || ($claim === $match) || ($this->uriTemplate->extract($claim, $match, true))) { return true; } } } return false; } }