manos a la obra con yupp php framework

24
Manos a la obra con Yupp PHP Framework Pablo Pazos Gutiérrez http://code.google.com/p/ yupp/

Upload: pablo-pazos

Post on 07-Dec-2014

1.509 views

Category:

Investor Relations


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Manos a la obra con Yupp PHP Framework

Manos a la obra conYupp PHP Framework

Pablo Pazos Gutiérrezhttp://code.google.com/p/yupp/

Page 2: Manos a la obra con Yupp PHP Framework

Agenda (1:55)Instalación - 10'Configuración - 5'Estructura del Framework - 5'URLs en Yupp - 5'Creando una aplicación - 10'ORM - 45'• Creando una clase persistente• Configurando la BD por aplicación• Script de arranque (bootstrap)• Relaciones hasOne• Acciones y vistas de infraestructura (scaffolding) • Relaciones hasMany• Verificando restricciones• Uso del belongsTo

Controladores y acciones - 20'Vistas y helpers - 15'

Page 3: Manos a la obra con Yupp PHP Framework

Cap 3: Instalando Yupp

Precondiciones:• Apache, PHP5, MySQL• Instalemos WAMP! (solo para Windows)• MOD_REWRITE activado• No hay restricciones especiales para linux…

• Pero cuidado con los permisos de lectura/escritura de directorios Instalando:• Copiar el directorio de Yupp en el www del WAMP• Acceder a http://localhost/yupp• ¿Vemos el escritorio? Yuppy!

• ¿Nos da un error?, verificar que MOD_REWRITE está activoo LoadModule rewrite_module modules/mod_rewrite.so en httpd.conf

del Apache

Page 4: Manos a la obra con Yupp PHP Framework

Cap 3: Configurando Yupp

Base de Datos:• ¿Error de que no existe la base de datos?

o Crear la base de datos en el PHPMyAdmin http://localhost/phpmyadmin

¿Dónde se define la conexión con la bd? Config: yupp/core/config/core.config.YuppConfig.class.php También se configuran:

Modos de ejecución Idiomas soportados (para i18n) Puntos de entrada al framework

Page 5: Manos a la obra con Yupp PHP Framework

Cap 4: estructura del framework

Estructura del framework:• apps• core

o dbo persistento routingo mvco ... 

•  css• images• js• .htaccess• index.php

Page 6: Manos a la obra con Yupp PHP Framework

Cap 5: URLs en Yupp

Ejemplo 1: pasaje explícito de paramshttp://localhost/yupp/app/controller/action?param1=value1&param2=value2• aplicación• controlador• acción• parámetros

Ejemplo 2: pasaje implícito de paramshttp://localhost/yupp/app/controller/action/value1/value2• aplicación• controlador• acción• _param_1, _param_2

Page 7: Manos a la obra con Yupp PHP Framework

Cap 6: Creando una aplicación!

Nueva aplicación:• nombre: "biblioteca"• descripción: "aplicacion para gestion de libros"• lenguage: "es"• controlador: "libro"

 Estructura de la aplicación: ver yupp/apps/biblioteca• bootstrap• config• model: clases persistentes del modelo de información• views: generan la interfaz gráfica del usuario• controllers: procesamiento de pedidos de usuarios• tests• app.xml

Page 8: Manos a la obra con Yupp PHP Framework

Cap 6: Creando la clase Libro

Copiar desde:• Aplicacion\cap 6\biblioteca\model\biblioteca.model.Libro.class.php

 Hacia:• C:\wamp\www\yupp\apps\biblioteca\model

 Expliquemos el código de la clase Libro:• extends PersistentObject• constructor• campos• constructor de superclase

Generemos las tablas!• veamos lo generado: http://localhost/phpmyadmin

Page 9: Manos a la obra con Yupp PHP Framework

Cap 7: Config. de BD por aplicación

Copiar desde:• Aplicacion\cap 7\biblioteca\config\db_config.php

 Hacia:• C:\wamp\www\yupp\apps\biblioteca\config

 Explicación Intentemos regenerar las tablas• Debemos crear la base de datos previamente 

Page 10: Manos a la obra con Yupp PHP Framework

Cap 7: Script de arranque

Copiar desde:Aplicacion\cap 7\biblioteca\bootstrap\apps.biblioteca.bootstrap.Bootstrap.script.php 

Hacia:C:\wamp\www\yupp\apps\biblioteca\bootstrap 

Explicación del código Ejecutemos el script de arranque!• ¿Vemos el contenido en la base?

Page 11: Manos a la obra con Yupp PHP Framework

Cap 8.1 Relaciones hasOne

Nuevo:• Model:

o Clase Autoro Libro hasOne Autor

• Bootstrap:o Ahora crea autores (ejecutar antes que tests)

• Test:o Al primer libro creado en bootstrap le asocia un autor

 Procedimiento:• copiar ejemplo• eliminar estructura de la db y regenerar• ejecutemos boostrap • ejecutemos test y miremos la db

Page 12: Manos a la obra con Yupp PHP Framework

Acciones y vistas de infraestructura

Entrar a:http://localhost/yupp/biblioteca/libro/list

Vista "list": auto-generada y navegable• Podemos crear un nuevo libro (create)• Ver los detalles de un libro (show)• Editar los datos de un libro (edit)• Volver al listado (list)• Eliminar un libro (delete)• Navegar hacia el autor del libro (show)

o Notar que ni siquiera hay un controlador creado Tenemos un sistema de información muy básico sin necesidad de programar la lógica de altas, bajas y modificaciones, ni las vistas

Page 13: Manos a la obra con Yupp PHP Framework

Cap 8.2 Relaciones hasMany

Nuevo:• Model:

o  Libro tiene varios coautores•  Test: (veamos el código)

1.crea un libro y le asocia autor y 2 coautores2.quita uno de los coautores al libro

Procedimiento:• copiar ejemplo• eliminar estructura de la db y regenerar• ejecutemos test y miremos la db

• Primero solo el test 1 y luego solo el test 2 

Page 14: Manos a la obra con Yupp PHP Framework

Cap 8.4 Verificando restricciones

Nuevo:• Model: (veamos el código!)

o Restricción en el nombre del autoro Restricción en el número de páginas del libro 

• Tests:o Test de validación que falla para mostrar violación de

restricciones Procedimiento:• copiar ejemplo• eliminar estructura de la db y regenerar• ejecutemos test para ver la verificación de restricciones

 

Page 15: Manos a la obra con Yupp PHP Framework

Cap 8.6 Salvar en cascada: belongsToReglas:

1. A(*)->(1)B: Yupp no sabe cual lado es el fuerte, necesita belongsTo explícito2. A(1)<->(1)B: Yupp no sabe cual es el lado fuerte, necesita belongsTo explícito3. A(1)->(*)B: Yupp considera que B belongsTo A4. A(1)<->(*)B: Yupp considera que B belongsTo A5. A(*)->(*)B: Yupp considera que B belongsTo A6. A(*)<->(*)B: Yupp no sabe cual es el lado fuerte, necesita belongsTo explícito

Importante: Si B belongsTo A, cuando una instancia de A tiene uno (hasOne) o muchos (hasMany) Bs, al salvar A, se salvan sus Bs asociados (en cascada).

Page 16: Manos a la obra con Yupp PHP Framework

Cap 8.6 Salvar en cascada: belongsToNuevo:• Modelo:

o Autor belongsTo Libroo Explício porque es Libro(*)->(1)Autor

• Tests:o Salvar en cascada hasOne (gracias al belongsTo)

 Procedimiento:• copiar ejemplo• no es necesario regenerar porque no cambió la estructura• ejecutemos test para ver que el libro salva su autor en

cascada

No vamos a mostrar ejemplo para ahorrar tiempo, lo pueden probar luego.

Page 17: Manos a la obra con Yupp PHP Framework

Cap 9: Controladores

Nuevo:•  Acciones en LibroController (veamos el código!)

o redirect en acción "index"o generación de JSONo generación de XML

• Bootstrapo Da de alta algunos libros con autor y coautores

 Procedimiento:• borrar el contenido de las tablas en la bd

• Como no cambiamos el modelo, no cambia la estructura, entonces no necesitamos regenerar las tablas.

• ejecutar el bootstrap

Page 18: Manos a la obra con Yupp PHP Framework

Cap 9: Controladores

Prueba 1: redirección• Acción index del controlador LibroController redirige a "list"• return $this->redirect( array('action'=>'list') );• Ver el comportamiento del pedido HTTP

Prueba 2: generación de JSON• http://localhost/yupp/biblioteca/libro/jsonShow?id=1• Probemos la generación recursiva!

Prueba 3: generación de XML• http://localhost/yupp/biblioteca/libro/xmlShow?id=1• Probemos la generación recursiva!

Page 19: Manos a la obra con Yupp PHP Framework

10. Vistas

Nuevo:• Vistas:

o views/libro/list.view.phpo views/libro/details.template.php

• Controladores y acciones:o Acción "list" implementada en LibroControllero Se agrega sleep a acción jsonShow

para prueba de helper ajax_link  

Proceso:• Copiamos cosas nuevas• Explicación del código del controlador• Explicación del código de la vista• Probamos vista y ajax_link• Probamos template, descomentando el código en la vista

Page 20: Manos a la obra con Yupp PHP Framework

Conclusiones

Múltiples usuarios:

Page 21: Manos a la obra con Yupp PHP Framework

Conclusiones

Agilidad:• Quitar tareas tediosas y repetitivas• Subir el nivel del desarrollo

o Programar el modelo de objetos, sin necesidad de diseñar el modelo de bases de datos

o Poco o nada de programar y mantener SQL• Programación estandarizada

o Estructuras y convenciones conocidas y predecibles

Page 22: Manos a la obra con Yupp PHP Framework

Conclusiones

Agilidad:• Pequeña curva de aprendizaje

o Una vez superada, se saca jugo a las convencioneso La performance de programación aumentao Rápido prototipado: "algo para mostrarle al cliente"o Liberaciones frecuentes, mejora visibilidad y feedback

• Flexible para implementar cualquier tipo de sistema web• Flexible para integrar con otros sistemas• Diseñado para extenderse y adaptarse a nuevas

necesidades 

Page 23: Manos a la obra con Yupp PHP Framework

¿Cómo seguir?Documentación http://www.simplewebportal.net/yupp_framework_php_doc

Grupohttp://groups.google.com/group/yuppframeworkphp

Bloghttp://yuppframework.blogspot.com Sitio en Google Codehttp://code.google.com/p/yupp

Código fuente (SVN de desarrollo)http://yupp.googlecode.com/svn/trunk/YuppPHPFramework/

Bugshttp://code.google.com/p/yupp/issues/list

Page 24: Manos a la obra con Yupp PHP Framework

¡Gracias!

Pablo Pazos Gutié[email protected]