Zen Scaffolding - Programador PHP

8
El Scaffolding de zenphp | 1 El Scaffolding de zenphp Serie de manuales sencillos IV PROYECTO : ZENPHP Marzo - 2008 Autor: Juan Belón Pérez http://blog.zenphp.es

description

Gracias a http://programadorphp.org/El Scaffolding de Zenphp.es

Transcript of Zen Scaffolding - Programador PHP

Page 1: Zen Scaffolding - Programador PHP

El S

caff

old

ing

de

zen

ph

p |

1

El Scaffolding de zenphp

Serie de manuales sencillos IV

PROYECTO : ZENPHP

Marzo - 2008

Autor: Juan Belón Pérez

http://blog.zenphp.es

Page 2: Zen Scaffolding - Programador PHP

El S

caff

old

ing

de

zen

ph

p |

2

Introducción: Manual para empezar a usar

Scaffolding

Un ejemplo de una aplicación que usa scaffolding es PhpMyAdmin, aunque podemos

encontrar esta técnica muy extendida en conjuntos de librerías de programación PHP

como CakePHP, Symfony o CodeIgniter y además en Ruby on Rails.

En este documento se explica cómo construir fácilmente un acceso a dicha técnica…

¿Qué es scaffolding? Un método sencillo de acceso a los datos de la base de datos.

https://forja.rediris.es/projects/csl2-zenphp/

zenphp : zen_andamio (scaffolding)

Page 3: Zen Scaffolding - Programador PHP

El S

caff

old

ing

de

zen

ph

p |

1

El Scaffolding de zenphp en 10 minutos

1. Crear una aplicación sencilla con un modelo asociado.

2. Añadir el scaffolding al modelo asociado de la aplicación.

3. Probar Scaffolding

1. Crear una aplicación SENCILLA con un modelo asociado

Para este ejercicio deberemos tener descargado zenphp, esto podemos hacerlo directamente de la página web o bien descargarlo por SVN con el comando: svn checkout https://forja.rediris.es/svn/csl2-zenphp/trunk zenphp

y colocar dicho directorio en nuestro directorio de pruebas, ejemplo: /htdocs/miweb de forma que queda tal como /htdocs/miweb/zenphp Configura en /htdocs/miweb/zenphp/zen.php las 3 primeras constantes. La aplicación por defecto de zenphp se llama prueba y se encuentra en /htdocs/miweb/zenphp/aplicaciones/prueba.php dicha aplicación es llamada desde /htdocs/miweb/index.php, abre este fichero y añade justo debajo de “var $html;” el siguiente código PHP:

/** * @var posts */ var $posts; Con esto estarás añadiendo una variable a la aplicación prueba y ahora vamos a crear el modelo asociado, para ello necesitamos crear un fichero en /htdocs/miweb/aplicaciones/modelos/posts.php con la definición del modelo, realmente ni siquiera necesitamos el fichero,bastaría con añadirlo justo debajo de la clase prueba pero así tendremos las cosas mucho más claras. Por suerte he tenido la honradez de escribir el código del modelo de datos asociado:

Page 4: Zen Scaffolding - Programador PHP

El S

caff

old

ing

de

zen

ph

p |

2

<?php

class posts extends zen_modelo_datos {

/**

* La variable padre es sobrecargada, realmente no es necesaria

pero lo hago para

* que los editores me tomen el tipo de mi aplicación y no el de

zen_aplicacion y

* poder así acceder a los métodos de mi aplicación en el editor.

*

* @var prueba

*/

var $padre;

/**

* Constructor

*

* @param prueba $padre

* @return posts

*/

function posts(&$padre){

//Necesitamos llamar al constructor del padre para especificar

la configuración del modelo

// Si no colocamos los campos, el constructor de

zen_modelo_datos lee los campos de la tabla "posts"

// en otro caso, si se especifican se mantienen en la

configuración

parent::zen_modelo_datos($padre,"","posts");

}

}

?>

Ésta es la clase, pero ¿cómo la carga la aplicación?, para ello añadimos en aplicaciones/prueba.php ,justo debajo de “$this->html =& new html_prueba($this);” la línea: zen___importar_modelos($this);

¿qué hace ésta línea? es el equivalente a ______ require_once('modelos/posts.php');

$this->posts =& new posts($this)

______

si queremos importar sólo unos cuantos modelos podemos hacer lo siguiente: zen___importar_modelos($this,"posts,noticias");

de esta forma estamos añadiendo sólo los modelos posts y noticias, que, además automáticamente cargan sus vistas. Las vistas son los controladores en zenphp, con,simplemente crear un fichero en aplicaciones/vistas/html_posts.php se carga dicha vista y se asocia al modelo, si no se crea dicho fichero se coloca una vista+controlador por defecto que es el zen_html_modelo_datos.

Tras todos los cambios la clase de aplicaciones/prueba.php ha de quedar así:

Page 5: Zen Scaffolding - Programador PHP

El S

caff

old

ing

de

zen

ph

p |

3

<?php

class prueba extends zen_aplicacion { //zen_aplicacion extiende de zen

/**

* Visualizador HTML para la clase

*

* @var html_prueba

*/

var $html;

/**

* @var posts

*/

var $posts;

/**

* Constructor

* @param str $inicializadores clases separadas por comas, a

inicializar

* @return prueba

*/

function prueba($inicializadores=""){

parent::zen_aplicacion($inicializadores);

$this->html =& new html_prueba($this);

zen___importar_modelos($this); //Carga todos los modelos aqui

/* zen___importar_modelos es el equivalente a hacer para cada modelo:

---

require_once('modelos/posts.php');

$this->posts =& new posts($this);/

---

Podemos cargar sólo los modelos que necesitemos así:

zen___importar_modelos($this,"posts,noticias"); */

}

}

/**

* Para mostrar el HTML por pantalla con una plantilla

*/

class html_prueba extends zen_html {

/**

* Clase plantilla para leer y mostrar HTML

*

* @var zen_plantilla

*/

var $plantilla;

/**

* Constructor

*

* @param prueba $_padre

* @return html_prueba

*/

function html_prueba(&$_padre){

parent::zen_html($_padre);

//$this->plantilla =& new zen_plantilla("base_web.html"); //en

media/plantillas/es/base_web.html

//donde 'es' es el idioma por defecto, español

}

}

?>

Ahora podemos acceder al andamio del modelo post simplemente añadiendo la variable andamio pero antes tendremos que crear la tabla en la base de datos,

Page 6: Zen Scaffolding - Programador PHP

El S

caff

old

ing

de

zen

ph

p |

4

recordemos que para configurar la base de datos necesitamos definir las constantes PHP de la conexión, para ello disponemos del fichero aplicaciones/prueba.config.php, ábrelo y coloca sus parámetros. Para crear la tabla podemos usar PhpMyAdmin o bien los comandos de la clase mediante la referencia a la base de datos en el constructor de prueba.php, justo antes de “zen___importar_modelos($this);”: $this->bd->crear_tabla("posts (

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

titulo VARCHAR(50),

cuerpo TEXT,

creado DATETIME DEFAULT NULL,

modificado DATETIME DEFAULT NULL

);");

Basta con cargar en el navegador http://localhost/miweb/ y se creará automáticamente, entonces podemos borrar la línea de creación.

2. Añadir SCAFFOLDING al modelo asociado de la aplicación

Para que se pueda acceder al andamio o scaffolding del modelo de datos vamos a nuestra clase aplicaciones/modelos/posts.php y añadimos justo debajo de “var $padre”, el siguiente código: /**

* Scaffolding de zenphp

*

* @var zen_andamio

*/

var $andamio;

La variable se puede llamar de las formas que se hayan definido en /htdocs/miweb/zenphp/zen.php -> ZF_PALABRAS_ANDAMIO, por defecto son scaffold y andamio de forma que podemos acceder al Scaffold o Andamio por medio de la adición de una de ellas en nuestro modelo de datos.

3. Probar SCAFFOLDING

Llendo a la dirección: http://localhost/miweb/index.php/nombre_modelo_datos/andamio/ o bien http://localhost/miweb/index.php/nombre_modelo_datos/scaffold/ En nuestro caso iremos a nuestro modelo posts mediante http://localhost/miweb/index.php/posts/andamio/

Para ver el resultado de la operación debe devolver algo muy parecido a la siguiente captura:

Page 7: Zen Scaffolding - Programador PHP

El S

caff

old

ing

de

zen

ph

p |

5

Page 8: Zen Scaffolding - Programador PHP

El S

caff

old

ing

de

zen

ph

p |

6

Lo único que resta ahora es editar los datos, el proceso del andamio contínua, estoy

desarrollando mejoras con los campos, edición con áreas de texto dinámicas, y otras muchas

mejoras que seguro son de agradecer…

Como se suele decir…

¡Sigan atentos a sus pantallas!

¿Qué viene a continuación?