/** * Define el inicio de un servicio REST * * @param Controller $controller controlador que se convertira en un servicio REST */ public static function init(Controller $controller) { $content = isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : 'text/html'; /** * Verifico el formato de entrada */ self::$_iFormat = str_replace(array('text/', 'application/'), '', $content); /* Compruebo el método de petición */ self::$_method = strtolower($_SERVER['REQUEST_METHOD']); $format = explode(',', $_SERVER['HTTP_ACCEPT']); while (self::$_oFormat = array_shift($format)) { self::$_oFormat = str_replace(array('text/', 'application/'), '', self::$_oFormat); if (in_array(self::$_oFormat, self::$_outputFormat)) { break; } } /** * Si no lo encuentro, revuelvo un error */ if (self::$_oFormat == null) { return 'error'; } else { View::response(self::$_oFormat); View::select('response'); } /** * Si la acción del controlador es un numero lo pasamos a los parametros */ if (is_numeric($controller->action_name)) { $controller->parameters = array($controller->action_name) + Rest::param(); } else { $controller->parameters = Rest::param(); } /** * reescribimos la acción a ejecutar, ahora tendra será el metodo de * la peticion: get , put, post, delete, etc. */ $controller->action_name = self::$_method; $controller->limit_params = FALSE; //no hay verificación en el numero de parametros. $controller->data = array(); //variable por defecto para las vistas. }