* * @version 1.0.0 */ class CatalogController extends Controller { /** * Obtener cualquier recurso * * Procesa la matriz de recursos solicitados y retorna una respuesta con los datos de cada recurso. */ public function get(Request $request) { $resources = $request->all(); $response = []; foreach ($resources as $resource => $data) { $exploded = explode(':', $resource); try { $class = "App\Http\Controllers\Catalogs\\{$this->toPascalCase($exploded[0])}Resource"; $method = $this->toCamelCase($exploded[1]); $response[$resource] = (new $class)->{$method}($data); } catch (\Exception $e) { $response[$resource] = false; } } return ApiResponse::OK->onSuccess($response); } /** * Transforma un string de formato kebab-case o snake_case a PascalCase * * @param string $string String a transformar * @return string String en formato PascalCase */ private function toPascalCase(string $string): string { return str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $string))); } /** * Transforma un string de formato kebab-case o snake_case a camelCase * * @param string $string String a transformar * @return string String en formato camelCase */ private function toCamelCase(string $string): string { return lcfirst(str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $string)))); } }