Your SlideShare is downloading. ×
Manos a la obra con Yupp PHP Framework
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Manos a la obra con Yupp PHP Framework

1,034
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,034
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
33
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Manos a la obra con Yupp PHP Framework Pablo Pazos Gutiérrez http://code.google.com/p/yupp/
  • 2. 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'
  • 3. 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á activo
          • LoadModule rewrite_module modules/mod_rewrite.so en httpd.conf del Apache
  • 4. Cap 3: Configurando Yupp
    • Base de Datos:
      • ¿Error de que no existe la base de datos?
        • 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
  • 5. Cap 4: estructura del framework
    • Estructura del framework:
      • apps
      • core
        • db
        • persistent
        • routing
        • mvc
        • ... 
      •   css
      • images
      • js
      • .htaccess
      • index.php
  • 6. Cap 5: URLs en Yupp
    • Ejemplo 1: pasaje explícito de params
    • http://localhost/yupp/app/controller/action?param1=value1&param2=value2
      • aplicación
      • controlador
      • acción
      • parámetros
    • Ejemplo 2: pasaje implícito de params
    • http://localhost/yupp/app/controller/action/value1/value2
      • aplicación
      • controlador
      • acción
      • _param_1, _param_2
  • 7. 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
  • 8. Cap 6: Creando la clase Libro
    • Copiar desde:
      • Aplicacioncap 6bibliotecamodelbiblioteca.model.Libro.class.php
    •  
    • Hacia:
      • C:wampwwwyuppappsbibliotecamodel
    •  
    • Expliquemos el código de la clase Libro:
      • extends PersistentObject
      • constructor
      • campos
      • constructor de superclase
    • Generemos las tablas!
      • veamos lo generado: http://localhost/phpmyadmin
  • 9. Cap 7: Config. de BD por aplicación
    • Copiar desde:
      • Aplicacioncap 7bibliotecaconfigdb_config.php
    •  
    • Hacia:
      • C:wampwwwyuppappsbibliotecaconfig
    •  
    • Explicación
    •  
    • Intentemos regenerar las tablas
      • Debemos crear la base de datos previamente 
  • 10. Cap 7: Script de arranque
    • Copiar desde:
    • Aplicacioncap 7bibliotecabootstrapapps.biblioteca.bootstrap.Bootstrap.script.php
    •  
    • Hacia:
    • C:wampwwwyuppappsbibliotecabootstrap
    •  
    • Explicación del código
    •  
    • Ejecutemos el script de arranque!
      • ¿Vemos el contenido en la base?
  • 11. Cap 8.1 Relaciones hasOne
    • Nuevo:
      • Model:
        • Clase Autor
        • Libro hasOne Autor
      • Bootstrap:
        • Ahora crea autores (ejecutar antes que tests)
      • Test:
        • 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
  • 12. 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)
        • 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
  • 13. Cap 8.2 Relaciones hasMany
    • Nuevo:
      • Model:
        •   Libro tiene varios coautores
      •   Test: (veamos el c ódigo)
        • crea un libro y le asocia autor y 2 coautores
        • 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
    •  
  • 14. Cap 8.4 Verificando restricciones
    • Nuevo:
      • Model: (veamos el código!)
        • Restricción en el nombre del autor
        • Restricción en el número de páginas del libro 
      • Tests:
        • 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
    •  
  • 15. Cap 8.6 Salvar en cascada: belongsTo
    • Reglas:
      • A(*)->(1)B: Yupp no sabe cual lado es el fuerte, necesita belongsTo explícito
      • A(1)<->(1)B: Yupp no sabe cual es el lado fuerte, necesita belongsTo explícito
      • A(1)->(*)B: Yupp considera que B belongsTo A
      • A(1)<->(*)B: Yupp considera que B belongsTo A
      • A(*)->(*)B: Yupp considera que B belongsTo A
      • 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).
  • 16. Cap 8.6 Salvar en cascada: belongsTo
    • Nuevo:
      • Modelo:
        • Autor belongsTo Libro
        • Explício porque es Libro(*)->(1)Autor
      • Tests:
        • 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.
  • 17. Cap 9: Controladores
    • Nuevo:
      •   Acciones en LibroController (veamos el código!)
        • redirect en acción &quot;index&quot;
        • generación de JSON
        • generación de XML
      • Bootstrap
        • 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
  • 18. Cap 9: Controladores
    • Prueba 1: redirección
      • Acción index del controlador LibroController redirige a &quot;list&quot;
      • 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!
  • 19. 10. Vistas
    • Nuevo:
      • Vistas:
        • views/libro/list.view.php
        • views/libro/details.template.php
      • Controladores y acciones:
        • Acción &quot;list&quot; implementada en LibroController
        • 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
  • 20. Conclusiones
    • Múltiples usuarios:
  • 21. Conclusiones
    • Agilidad:
      • Quitar tareas tediosas y repetitivas
      • Subir el nivel del desarrollo
        • Programar el modelo de objetos, sin necesidad de diseñar el modelo de bases de datos
        • Poco o nada de programar y mantener SQL
      • Programación estandarizada
        • Estructuras y convenciones conocidas y predecibles
  • 22. Conclusiones
    • Agilidad:
      • Pequeña curva de aprendizaje
        • Una vez superada, se saca jugo a las convenciones
        • La performance de programación aumenta
        • Rápido prototipado: &quot;algo para mostrarle al cliente&quot;
        • 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
    •  
  • 23. ¿Cómo seguir?
    • Documentación
    • http://www.simplewebportal.net/yupp_framework_php_doc
    • Grupo
    • http://groups.google.com/group/yuppframeworkphp
    • Blog
    • http://yuppframework.blogspot.com
    •  
    • Sitio en Google Code
    • http://code.google.com/p/yupp
    • Código fuente (SVN de desarrollo)
    • http://yupp.googlecode.com/svn/trunk/YuppPHPFramework/
    • Bugs
    • http://code.google.com/p/yupp/issues/list
  • 24. ¡Gracias! Pablo Pazos Gutiérrez [email_address]

×