SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
El Scaffolding de zenphp
                                 Serie de manuales sencillos IV




                                      PROYECTO : ZENPHP
                                             Marzo - 2008
El Scaffolding de zenphp |




                                        Autor: Juan Belón Pérez
                                         http://blog.zenphp.es




      1
Introducción:
                             Manual para empezar a usar
                                          Scaffolding
                                 zenphp : zen_andamio (scaffolding)
                                 ¿Qué es scaffolding?
                                 Un método sencillo de acceso a los datos de la base de
                                 datos.

                                 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…
El Scaffolding de zenphp |




                                 https://forja.rediris.es/projects/csl2-zenphp/
      2
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:
El Scaffolding de zenphp |




      1
<?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
El Scaffolding de zenphp |




                             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í:




      2
<?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);
El Scaffolding de zenphp |




                                 //$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,

      3
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 S CAFFOLDING 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 S CAFFOLDING
                             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
El Scaffolding de zenphp |




                             http://localhost/miweb/index.php/posts/andamio/


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




      4
El Scaffolding de zenphp |




5
¿Qué viene a continuación?

                   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!
El Scaffolding de zenphp |




      6

Más contenido relacionado

La actualidad más candente

Curso Java Avanzado 3 4 Js Ps Con Java Beans
Curso Java Avanzado   3 4 Js Ps Con Java BeansCurso Java Avanzado   3 4 Js Ps Con Java Beans
Curso Java Avanzado 3 4 Js Ps Con Java BeansEmilio Aviles Avila
 
About debuggers.help
About debuggers.helpAbout debuggers.help
About debuggers.helptiopocho
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasosSoni BM
 
Rails Plugins. Javier Ramirez
Rails Plugins. Javier RamirezRails Plugins. Javier Ramirez
Rails Plugins. Javier Ramirezjavier ramirez
 
Javier Ramirez Rails Plugins Pdf
Javier Ramirez Rails Plugins PdfJavier Ramirez Rails Plugins Pdf
Javier Ramirez Rails Plugins Pdfjavier ramirez
 
Programa en Rails como si Jugases con Lego. Javier Ramirez
Programa en Rails como si Jugases con Lego. Javier RamirezPrograma en Rails como si Jugases con Lego. Javier Ramirez
Programa en Rails como si Jugases con Lego. Javier Ramirezjavier ramirez
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
TEMA Nº 3: ELEMENTOS DE JSP
TEMA Nº 3: ELEMENTOS DE JSPTEMA Nº 3: ELEMENTOS DE JSP
TEMA Nº 3: ELEMENTOS DE JSPAnyeni Garay
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónRightster
 
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008javier ramirez
 
Curso TDD Ruby on Rails #03: Tests unitarios
Curso TDD Ruby on Rails #03: Tests unitariosCurso TDD Ruby on Rails #03: Tests unitarios
Curso TDD Ruby on Rails #03: Tests unitariosAlberto Perdomo
 
Curso TIC de PHP y MSQL
Curso TIC de PHP y MSQLCurso TIC de PHP y MSQL
Curso TIC de PHP y MSQLWilian
 
Java Script BáSico Ajax
Java Script BáSico AjaxJava Script BáSico Ajax
Java Script BáSico AjaxArnulfo Gomez
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientosRichard Robalino
 
Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMjavier ramirez
 

La actualidad más candente (20)

Curso Java Avanzado 3 4 Js Ps Con Java Beans
Curso Java Avanzado   3 4 Js Ps Con Java BeansCurso Java Avanzado   3 4 Js Ps Con Java Beans
Curso Java Avanzado 3 4 Js Ps Con Java Beans
 
About debuggers.help
About debuggers.helpAbout debuggers.help
About debuggers.help
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
Clase 5 php
Clase 5 phpClase 5 php
Clase 5 php
 
Sf2 pr5 mi primer proyecto
Sf2 pr5 mi primer proyectoSf2 pr5 mi primer proyecto
Sf2 pr5 mi primer proyecto
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Rails Plugins. Javier Ramirez
Rails Plugins. Javier RamirezRails Plugins. Javier Ramirez
Rails Plugins. Javier Ramirez
 
Javier Ramirez Rails Plugins Pdf
Javier Ramirez Rails Plugins PdfJavier Ramirez Rails Plugins Pdf
Javier Ramirez Rails Plugins Pdf
 
Programa en Rails como si Jugases con Lego. Javier Ramirez
Programa en Rails como si Jugases con Lego. Javier RamirezPrograma en Rails como si Jugases con Lego. Javier Ramirez
Programa en Rails como si Jugases con Lego. Javier Ramirez
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
TEMA Nº 3: ELEMENTOS DE JSP
TEMA Nº 3: ELEMENTOS DE JSPTEMA Nº 3: ELEMENTOS DE JSP
TEMA Nº 3: ELEMENTOS DE JSP
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. Introducción
 
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008
 
Curso TDD Ruby on Rails #03: Tests unitarios
Curso TDD Ruby on Rails #03: Tests unitariosCurso TDD Ruby on Rails #03: Tests unitarios
Curso TDD Ruby on Rails #03: Tests unitarios
 
Curso TIC de PHP y MSQL
Curso TIC de PHP y MSQLCurso TIC de PHP y MSQL
Curso TIC de PHP y MSQL
 
Java Script BáSico Ajax
Java Script BáSico AjaxJava Script BáSico Ajax
Java Script BáSico Ajax
 
Curso Php
Curso PhpCurso Php
Curso Php
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientos
 
Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVM
 

Destacado

Claves para el diseño de materiales CLIL /AICLE
Claves para el diseño de materiales CLIL /AICLEClaves para el diseño de materiales CLIL /AICLE
Claves para el diseño de materiales CLIL /AICLEisaperez
 
CLIL 4: Communication
CLIL 4: CommunicationCLIL 4: Communication
CLIL 4: CommunicationMontse Irun
 
CLIL 1: What is it? Advantages and Drawbacks
CLIL 1: What is it? Advantages and DrawbacksCLIL 1: What is it? Advantages and Drawbacks
CLIL 1: What is it? Advantages and DrawbacksMontse Irun
 

Destacado (6)

Clil dario
Clil darioClil dario
Clil dario
 
Claves para el diseño de materiales CLIL /AICLE
Claves para el diseño de materiales CLIL /AICLEClaves para el diseño de materiales CLIL /AICLE
Claves para el diseño de materiales CLIL /AICLE
 
Col6
Col6Col6
Col6
 
CLIL 4: Communication
CLIL 4: CommunicationCLIL 4: Communication
CLIL 4: Communication
 
CLIL 1: What is it? Advantages and Drawbacks
CLIL 1: What is it? Advantages and DrawbacksCLIL 1: What is it? Advantages and Drawbacks
CLIL 1: What is it? Advantages and Drawbacks
 
Teaching in english clil
Teaching in english clilTeaching in english clil
Teaching in english clil
 

Similar a Zen Scaffolding - Programador PHP

Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan phpCarlos Zantana
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPJuan Belón Pérez
 
Desarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend FrameworkDesarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend Frameworkricsoc
 
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...JaenFrankcezco
 
Manual php y_mysql
Manual php y_mysqlManual php y_mysql
Manual php y_mysqljohan reyes
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Selenium with lettuce and python
Selenium with lettuce and pythonSelenium with lettuce and python
Selenium with lettuce and pythonKaren Wiznia
 
Introducción a Zend Framework
Introducción a Zend FrameworkIntroducción a Zend Framework
Introducción a Zend FrameworkIrontec
 
Programacion en php atavez de ejemplos
Programacion en php atavez de ejemplosProgramacion en php atavez de ejemplos
Programacion en php atavez de ejemplosRobert Rodriguez
 
Apuntes php
Apuntes phpApuntes php
Apuntes phpJavi
 
Framework kahana
Framework kahanaFramework kahana
Framework kahanaH31D1
 
Zend framework
Zend frameworkZend framework
Zend frameworkjasiel_14
 
Manual Completo Php 5
Manual Completo Php 5Manual Completo Php 5
Manual Completo Php 5Pablo Morales
 
Desarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdfDesarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdfMauricioGArmoa
 

Similar a Zen Scaffolding - Programador PHP (20)

M V C - Programador PHP
M V C - Programador PHPM V C - Programador PHP
M V C - Programador PHP
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan php
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHP
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
Desarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend FrameworkDesarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend Framework
 
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
 
Php
PhpPhp
Php
 
Manual php y_mysql
Manual php y_mysqlManual php y_mysql
Manual php y_mysql
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Selenium with lettuce and python
Selenium with lettuce and pythonSelenium with lettuce and python
Selenium with lettuce and python
 
Introducción a Zend Framework
Introducción a Zend FrameworkIntroducción a Zend Framework
Introducción a Zend Framework
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Programacion en php atavez de ejemplos
Programacion en php atavez de ejemplosProgramacion en php atavez de ejemplos
Programacion en php atavez de ejemplos
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Framework kahana
Framework kahanaFramework kahana
Framework kahana
 
Zend framework
Zend frameworkZend framework
Zend framework
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
Manual Completo Php 5
Manual Completo Php 5Manual Completo Php 5
Manual Completo Php 5
 
Desarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdfDesarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdf
 
Php basico
Php basicoPhp basico
Php basico
 

Más de Juan Belón Pérez

Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmAplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmJuan Belón Pérez
 
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogYahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogJuan Belón Pérez
 
Proyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dProyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dJuan Belón Pérez
 
Aecem - Libro Blanco - Para Programador Php.org
Aecem - Libro Blanco  - Para Programador Php.orgAecem - Libro Blanco  - Para Programador Php.org
Aecem - Libro Blanco - Para Programador Php.orgJuan Belón Pérez
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Composicion de servicios web, un ejemplo
Composicion de servicios web, un ejemploComposicion de servicios web, un ejemplo
Composicion de servicios web, un ejemploJuan Belón Pérez
 
Memoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPMemoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPJuan Belón Pérez
 
Depurando Java Script - Programador PHP
Depurando Java Script - Programador PHPDepurando Java Script - Programador PHP
Depurando Java Script - Programador PHPJuan Belón Pérez
 
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPZenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPJuan Belón Pérez
 
Ensayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPEnsayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPJuan Belón Pérez
 
Rendimiento Java Script - Programador PHP
Rendimiento  Java Script - Programador PHPRendimiento  Java Script - Programador PHP
Rendimiento Java Script - Programador PHPJuan Belón Pérez
 
Bibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPBibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPJuan Belón Pérez
 
Aceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHPAceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHPJuan Belón Pérez
 
Introducción A La Orientación A Aspectos - Programador PHP
Introducción A La Orientación A Aspectos - Programador PHPIntroducción A La Orientación A Aspectos - Programador PHP
Introducción A La Orientación A Aspectos - Programador PHPJuan Belón Pérez
 

Más de Juan Belón Pérez (20)

Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmAplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
 
¿Cómo elegir servidor web?
¿Cómo elegir servidor web?¿Cómo elegir servidor web?
¿Cómo elegir servidor web?
 
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogYahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
 
Proyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dProyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3d
 
Aecem - Libro Blanco - Para Programador Php.org
Aecem - Libro Blanco  - Para Programador Php.orgAecem - Libro Blanco  - Para Programador Php.org
Aecem - Libro Blanco - Para Programador Php.org
 
Bpel y Open Esb
Bpel y Open EsbBpel y Open Esb
Bpel y Open Esb
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Composicion de servicios web, un ejemplo
Composicion de servicios web, un ejemploComposicion de servicios web, un ejemplo
Composicion de servicios web, un ejemplo
 
Presentación: xUnit y Junit
Presentación: xUnit y JunitPresentación: xUnit y Junit
Presentación: xUnit y Junit
 
Cómo elegir un servidor Web
Cómo elegir un servidor WebCómo elegir un servidor Web
Cómo elegir un servidor Web
 
Memoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPMemoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHP
 
Depurando Java Script - Programador PHP
Depurando Java Script - Programador PHPDepurando Java Script - Programador PHP
Depurando Java Script - Programador PHP
 
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPZenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
 
Zenphp - Programador PHP
Zenphp - Programador PHPZenphp - Programador PHP
Zenphp - Programador PHP
 
Ensayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPEnsayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHP
 
Zen AJAX - Programador PHP
Zen AJAX - Programador PHPZen AJAX - Programador PHP
Zen AJAX - Programador PHP
 
Rendimiento Java Script - Programador PHP
Rendimiento  Java Script - Programador PHPRendimiento  Java Script - Programador PHP
Rendimiento Java Script - Programador PHP
 
Bibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPBibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHP
 
Aceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHPAceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHP
 
Introducción A La Orientación A Aspectos - Programador PHP
Introducción A La Orientación A Aspectos - Programador PHPIntroducción A La Orientación A Aspectos - Programador PHP
Introducción A La Orientación A Aspectos - Programador PHP
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 

Último (11)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 

Zen Scaffolding - Programador PHP

  • 1. El Scaffolding de zenphp Serie de manuales sencillos IV PROYECTO : ZENPHP Marzo - 2008 El Scaffolding de zenphp | Autor: Juan Belón Pérez http://blog.zenphp.es 1
  • 2. Introducción: Manual para empezar a usar Scaffolding zenphp : zen_andamio (scaffolding) ¿Qué es scaffolding? Un método sencillo de acceso a los datos de la base de datos. 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… El Scaffolding de zenphp | https://forja.rediris.es/projects/csl2-zenphp/ 2
  • 3. 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: El Scaffolding de zenphp | 1
  • 4. <?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 El Scaffolding de zenphp | 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í: 2
  • 5. <?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); El Scaffolding de zenphp | //$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, 3
  • 6. 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 S CAFFOLDING 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 S CAFFOLDING 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 El Scaffolding de zenphp | http://localhost/miweb/index.php/posts/andamio/ Para ver el resultado de la operación debe devolver algo muy parecido a la siguiente captura: 4
  • 7. El Scaffolding de zenphp | 5
  • 8. ¿Qué viene a continuación? 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! El Scaffolding de zenphp | 6