POO, MVC y Helpers en php

POO, MVC y Helpers en php

Despues de una temporada sin aportar nada a esta, nuestra comunidad :) voy a dejar unas clases denominadas helpers. Si has trabajado con Cakephp sabes de lo que hablo así pues te puedes saltar su definición conceptual. Antes de esto una breve explicación de que son, como utilizarlos y donde. Los helpers, "ayudantes" son clases que nos permiten realizar una lógica extra en nuestras vistas (hablando en MVC). Las vistas están concebidas para mostrar los datos recuperados desde el controlador u obtener datos ingresados por el usuario. Los helpers son a las vistas lo que los componentes a los controladores. Dicho esto el flujo de datos seria el siguiente:

De la capa de datos (modelo) a la capa de presentación (vista):

Modelo->(datos)->Controlador->(procesa datos y define donde presentarlos)->Vista(imprime los datos) ó

De la capa de presentación (vista) a la de datos:

Vista(formulario)->Conrolador->(metodo que procesara estos datos)->Modelo(realiza CRUD según el caso)

Aplicando helpers se añadiría una capa extra entre controlador y vista:

Modelo->(datos)->Controlador->(procesa datos y define donde presentarlos)->Helper->Vista(imprime los datos) ó Veamos el ejemplo en código php y html: <?php //importamos nuestro modelo o modelos a utilizar include_once "ModelUsuario"; //Definimos el controlador class ControllerUsuarios extends MainController { public function __construct(){} public function nuevo_registro() { if(empty($_POST["codigo"])) { //Como vamos añadir un nuevo usuario nuestro objeto lo creamos vacio //este el el constructor: ($codigo="",$nombre="",$login="",$password="") $oUsuario = new ModelUsuario(); //asignamos algunos valores que se mostrarán al cargarse el formulario $oUsuario->set_nombre("obligatorio"); //Pasamos el objeto a pintar en la vista. Como es un registro nuevo aplicaremos //un valor por defecto a los campos $this->view_params("oUsuario",$oUsuario); //este método indica en que vista se utilizará los datos pasados en params. $this->view("usuarios/detalle.inc"); } } } //Se construye una instancia del controlador y se ejecuta el metodo indicado $sMethod = $_POST["controller_method"]; $oController = new ControllerUsuarios(); $oController->{$sMethod}; ?> Este seria el código de la vista, archivo detalle.inc. <!-- //VISTA: archivo "detalle.inc" aqui contamos con el objeto $oUsuario pasado en Params--> <form id="frmNuevoUsuario" action="controller_usuarios.php" method="post"> <label for="txtCodigo">Código</label> <input type="text" name="codigo" id="txtCodigo" value="" readonly > <label for="txtNombre">Nombre</label> <input type="text" name="nombre" id="txtNombre" value="<?php echo $oUsuario->get_nombre(); ?>" required> <label for="txtLogin">Login</label> <input type="text" name="login" id="txtLogin" value="<?php echo $oUsuario->get_login(); ?>" required> <label for="passPassword">Password</label> <input type="password" name="password" id="passPassword" value="<?php echo $oUsuario->get_password(); ?>" required> <input type="hidden" name="controller_method" id="hidMethod" value="agregar" > </form> Imaginemos que desearamos aplicar el atributo readonly al login cuando este no este vacio. deberiamos hacer algo como esto: ... <input type="text" name="login" id="txtLogin" value="<?php echo $oUsuario->get_nombre(); ?>" <?php if($oUsuario->get_login()!="")echo "readonly"; ?> required /> ... Aqui interviene el helper. Nuestro ayudante en este caso se encargará de generar un control text, password y/o hidden. Este contará con los atributos y metodos que permitan la creación del código html teniendo la flexibilidad que al crearlos directamente sin php. Uno de estos metodos será "readonly()" Nuestra vista quedaria algo asi: <?php //Definimos los objetos que representan a nuestros controles //El segundo parámetro del constructor es la etiqueta. Crea el tag "<label for="controlid">Parametro2<label> $oTxtCodigo = new HelperText("codigo","Código",$oUsuario->get_codigo()); $oTxtCodigo->readonly(); $oTxtNombre = new HelperNombre("nombre","Nombre",$oUsuario->get_nombre()); $oTxtNombre->required(); $oTxtLogin = new HelperText("login","Login",$oUsuario->get_login()); if($oUsuario->get_login()!="") $oTxtLogin->readonly(); $oTxtLogin->required(); $oPassPassword = new HelperPassword("password","Password",$oUsuario->get_password()); $oPassPassword->required(); $oHidMetodo = new HelperHidden("controller_method","agregar"); ?> <form id="frmNuevoUsuario" action="controller_usuarios.php" method="post"> <?php //Ahora utilizamos el metodo show(). Este generará el código html de los controles $oTxtCodigo->show(); $oTxtNombre->show(); $oTxtLogin->show(); $oPassPassword->show(); $oHidMetodo->show(); ?> </form> En conclusión, hemos utilizado clases tipo helper para generar la lógica extra, esta, es la creación de controles mediante código php, basada en programación orientada a objetos (POO) y aplicandolas a nuestra arquitectura modelo vista controlador (MVC) o en tres capas. El paquete de helpers los iré subiendo uno a uno. El primero: el helper Text HelperText.php

Te puede interesar

Autor: Eduardo A. F.
Publicado: 14-04-2012 11:51
Actualizado: 27-04-2012 20:11