/** * Parse route annotations on given object methods * @param Method[] $methods * @return array $data[URL mask][request method] = action name e.g. $data['api/v1/articles']['GET'] = 'read' */ protected function parseClassRoutes($methods) { $routeData = array(); foreach ($methods as $method) { // Parse annotations only on action methods if (!Strings::contains($method->getName(), 'action')) { continue; } $annotations = $this->routeAnnotation->parse($method); foreach ($annotations as $requestMethod => $mask) { $action = str_replace('action', '', $method->getName()); $action = Strings::firstLower($action); $pattern = $this->prefix ? $this->prefix . '/' . $mask : $mask; $routeData[$pattern][$requestMethod] = $action; } } return $routeData; }