RSPhp
Inicio Rápido
Código Fuente
Documentación

Documentación

Controladores

Los controladores son los encargados de "despachar" las peticiones de los clientes. Son los ejecutores, toman una petición, la procesan y devuelven un resultado. Un controlador debe existir para que la aplicación pueda responder una petición.

Los controladores, vistos desde fuera, en las url, son como subdirectorios, y las funciones como archivos. En realidad, conjuntamente un controlador y una función es un comando, una petición de una acción a la aplicación.

Los controladores son archivos que se encuentran en /application/controllers. Todos tienen la convencion de nombre de archivo nombrecontroladorcontroller.php. Es decir, el nombre del controlador, unido al sufijo "controller", con la extensión ".php".

Todos los controladores son clases, con la convención MiControladorController y todos extienden la clase Controller.

    
      MiControladorController extends Controler {

      } // end class MiControlladorController
    
  

Los controladores necesitan de al menos dos funciones, __construct() e index().

__construct crea una instancia de la clase, como sabemos.
index es como la home, como index.html o index.php, la función por defecto, que se ejecutará si no se solicita explícitamente una función del controlador.

    
      MiControladorController extends Controller {
        /**
         * Crea una instancia del controlador
         */
        function __construct() {

        } // end function __construct

        /**
         * Es la home, la función por defecto, si no se llama a ninguna otra
         * Url: $baseUrl/micontrolador/
         */
        function index() {

        } // end function index
      } // end class MiControlladorController
    
  

JSON Response

Para entregar los datos en formato JSON en lugar de HTML, contamos con la función jsonResponse(), que acepta los siguientes parámetros:

No regresa datos, escribe directamente el JSON como si llamaramos "echo". Ejemplo:

    
      CustomerController extends Controller {

        /**
         * Devuelve datos de un usuario en json
         */
        function getUserData() {
          //  Preparamos los datos
          $data["name"]= "luis";
          $data["lastname"] = "espino";
          $data["customer_id"] = 12959;
          //  Los escribimos en json
          $this->jsonResponse( $data );
        } // end function getUserData

      } // end class CustomerController
    
  

Al visitar http://misitio.com/customer/getuserdata nos devolverá:

    
      {
        "name": "luis",
        "lastname": "espino",
        "customer_id": "12959
      }
    
  

XML Response

Para entregar los datos en formato XML en lugar de HTML, contamos con la función xmlResponse(), que acepta los siguientes parámetros:

No regresa datos, escribe directamente el XML como si llamaramos "echo". Ejemplo:

    
      CustomerController extends Controller {

        /**
         * Devuelve datos de un usuario en json
         */
        function getUserData() {
          //  Preparamos los datos
          $data["name"]= "luis";
          $data["lastname"] = "espino";
          $data["customer_id"] = 12959;
          //  Los escribimos en xml
          $this->xmlResponse( $data );
        } // end function getUserData

      } // end class CustomerController
    
  

Al visitar http://misitio.com/customer/getuserdata nos devolverá:

    
      <data>
        <name>luis</name>
        <lastName>espino</lastName>
        <customer_id>32</customer_id>
      </data>
    
  

CORS Headers

En ocasiones queremos permitir que otros sitios consuman nuestros servicios con javascript, mediante algun API REST. En estos casos, tenemos que permitir CORS (Cross Origin Resource Sharing). Para lograrlo necesitamos establecer ciertos headers en la respuesta http.

Esto puede ser logrado fácilmente con la función setCORSHeaders() de la clase Controller. No tiene parámetros y se utiliza de la siguiente manera:

    
      CustomerController extends Controller {

        /**
         * Devuelve datos de un usuario en json
         */
        function getUserData() {
          //  Preparamos los datos
          $data["name"]= "luis";
          $data["lastname"] = "espino";
          $data["customer_id"] = 12959;
          //  Los escribimos en json
          //  Permitiendo acceso con CORS
          $this->setCORSHeaders();

          //  Ahora si escribimos los datos
          $this->jsonResponse( $data );
        } // end function getUserData

      } // end class CustomerController