/** * Returns table name by presenter i.e.: BaseTestPresenter => base_test * @return string */ public function getTableName() { $name = parent::getName(); if ($pos = strpos($name, ':')) { $name = substr($name, $pos + 1); } return Strings::toSnakeCase($name); }
/** * Convert array keys to camel case * @param array|\Traversable $array */ private function convertToCamel(&$array) { if ($array instanceof \Traversable) { $array = iterator_to_array($array); } foreach (array_keys($array) as $key) { $value =& $array[$key]; unset($array[$key]); $transformedKey = Strings::toCamelCase($key); if (is_array($value) || $value instanceof \Traversable) { $this->convertToCamel($value); } $array[$transformedKey] = $value; unset($value); } }
/** * 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; }
/** * Create sort list * @return array */ protected function createSortList() { $sortList = array(); $fields = array_filter(explode(',', $this->request->getQuery(self::SORT_KEY))); foreach ($fields as $field) { $isInverted = Strings::substring($field, 0, 1) === '-'; $sort = $isInverted ? self::SORT_DESC : self::SORT_ASC; $field = $isInverted ? Strings::substring($field, 1) : $field; $sortList[$field] = $sort; } return $sortList; }