/** * @param Request $request * @return string[] */ protected function breakdownRoute(Request $request) { $actionName = ''; $parts = explode('/', rtrim($request->getPathInfo(), '/')); array_shift($parts); if ($prefix = $this->config->get(self::CONFIG_KEY_PREFIX)) { if (count($parts) && $parts[0] == $prefix) { array_shift($parts); } } $subnamespaces = $this->config->get(self::CONFIG_KEY_ACTION_SUBNAMESPACES, []); if (is_array($subnamespaces) && count($subnamespaces) && count($parts) && in_array($parts[0], $subnamespaces)) { $actionName = $parts[0] . '\\'; array_shift($parts); } $actionName .= count($parts) ? array_shift($parts) : self::DEFAULT_ACTION; $params = []; while (count($parts)) { $params[array_shift($parts)] = count($parts) ? array_shift($parts) : null; } return [$actionName, $params]; }