18/11/10

Componentes a medida en CakePHP

Como ya sabemos, un componente en CakePhp es un paquete de logica( clase ) que se va a compartir entre los diferentes controladores.

En este articulo voy a explicar como crear nuestros propios componentes, es decir componentes personalizados. Mas de uno se podra preguntar para que queremos utilizar los componentes, y aqui la explicacion: supongamos que tenemos un calculo que se repite en muchas partes del sistema, en este caso agrupamos la logica en un componente y de esta manera reautilizamos codigo, hacemos mas comprensible el codigo y si algun dia hay que hacer alguna modificacion en el calculo, esta se hara en un solo lado.



Para crear nuestro componente, lo primero que haremos es crear un fichero en /app/controllers/components/calculo.php y escribimos el siguiente codigo:
   <?php
  
       class CalculoComponent extends Object
       {
          function showResult($oper1,$oper2)
          {
             $resultado = $oper1 + $oper2;
             return $resultado;
          }

       }
   ?>


A esta altura ya tenemos nuestro componente personalizado, para poder utilizarlo desde algun controlador, tendremos que incluir el mismo en el array components.

   <?php

          //Ejemplo de como hacer uso de nuestro componente personalizado

       class PersonasController extends AppController
       {
          //Incluyo el componente
            var $components = array('Calculo');

          //El componentes estara listo para utilizar
            function calcularEcuacion()
            {
               $res = $this->Calculo->showResult(20,40);
            }        

       }

   ?>

De esta forma hemos utilizado nuestro componente en un controlador.

Para incluir algun componente del nucleo de Cake(Session,Email,etc), incluimos el mismo en el array components de nuestro componente.
     <?php
  
       class CalculoComponent extends Object
       {
          //Incluyo el componente Session
          var $components = array('Session');

          function showResult($oper1,$oper2)
          {
             $resultado = $oper1 + $oper2;
             return $resultado;
          }

       }
   ?>

Fuente
Fuente original

No hay comentarios:

Publicar un comentario