getElementsByTagName(self::KEY_ROUTE); /** @var \DOMElement $route */ foreach ($routes as $route) { if ($route->nodeType != XML_ELEMENT_NODE) { continue; } /** @var \DOMElement $service */ $service = $route->getElementsByTagName(self::KEY_SERVICE)->item(0); $serviceClass = $service->attributes->getNamedItem(self::KEY_CLASS)->nodeValue; $serviceMethod = $service->attributes->getNamedItem(self::KEY_METHOD)->nodeValue; $url = trim($route->attributes->getNamedItem(self::KEY_URL)->nodeValue); $method = $route->attributes->getNamedItem(self::KEY_METHOD)->nodeValue; // We could handle merging here by checking if the route already exists $result[self::KEY_ROUTES][$url][$method] = [ self::KEY_SERVICE => [ self::KEY_CLASS => $serviceClass, self::KEY_SERVICE => $serviceMethod, ], ]; } return $result; } }