SlideShare una empresa de Scribd logo
Patrones de diseño y Orientación a Objetos en PHP5




                  ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Licencia

             Copyright (c)  2006  Anibal Rojas
             Copyright (c)  2004­2006  Ernesto Hernández­Novich.
             Modificaciones y adaptaciones. 
             Copyright (c)  2006, 2007  Leonardo Caballero / Jesús Lara.
             Permission  is  granted  to  copy,  distribute  and/or  modify  this 
             document  under  the  terms  of  the  GNU  Free  Documentation 
             License,  Version  1.2  or  any  later  version  published  by  the  Free 
             Software Foundation; with no Invariant Sections, no Front­Cover 
             Texts, and no Back­Cover Texts.  A copy of the license is included 
             in the section entitled quot;GNU Free Documentation Licensequot;.



                      ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 GNU Free Documentation License


               Puede obtener una copia de la licencia quot;GNU Free Documentation 
               Licensequot;  en  los  ficheros  llamados  quot;copyright.txtquot;  en  ingles, 
               quot;copyright.es.txtquot; en español o en los siguientes sitios en Internet:


                    http://www.gnu.org/copyleft/fdl.html
                •


                    http://www.fsf.org/licensing/licenses/fdl.html
                •




                         ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Definiciones básicas
  Estas definiciones son más importante de lo que parece. 

      Desarrollo de software.
  •


      Diseño Web.
  •


      Desarrollo Web.
  •


      Aplicación Web.
  •




                                ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Tecnologías involucradas en la Web.




                      ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Funcionamiento básico de una Aplicación Web.
  Desde el punto de vista del Usuario:
  1) El usuario abre un URL.
  2) Llena un formulario.
  3) Oprime alguno de los botones.
  4) La aplicación genera un nuevo formulario con resultados.




                               ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Funcionamiento básico de una Aplicación Web :: Continuación.


                         Es un documento .php




                                                            La página se 
                                                             ejecuta y 
  Solicita un 
                                                              cambia 
  Documento
                                                               código 
                                                               HTML


                               La página HTML se 
                                 envía al cliente




                      ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Funcionamiento básico de una Aplicación Web :: Continuación.




                                                Módulo de Funciones
       Base de 
                                                          ODBC
        Datos


                                                          Motor 
                                                          Zend
                                                   2
                  1                                                   3
                                                        Compila
                   6                                          4
                       Interfase del servidor

                                                   5    Ejecuta




                            ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Proyecciones de la Web.




                      ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Factibilidad para el desarrollo de Aplicaciones Web.
  • ¿Cuánto cuesta encontrar un programador que sepa todo eso?

  • ¿Cuánto cuesta mantener toda esta mezcla de multilenguaje?

  • ¿En cuanto tiempo puede ofrecer al cliente un prototipo de la aplicación?

  • ¿Cuanto tiempo necesita para cambiar toda la interfaz de usuario de la aplicación 

    a las necesidades del cliente?
  • ¿Puede  garantizar  que  la  aplicación  cumpla  con  los  estándares  y  normativas  de 

    accesibilidad, reusabilidad y operatividad de la Web?



          ¡Si no sabes responder a estas preguntas con respuestas a tiempos 

              cortos, prácticos y razonables, ya entiendes el gran problema!



                              ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Hablemos de PHP.
      Originalmente PHP fue siglas de Personal Home Page Tools.
  •

      Creado en 1995 por Rasmu Lerdorf.
  •

      Año 1997, cambios significativos.
  •

      Al redefinirse el motor recibió las siglas del acrónimo Hypertext Pre Processor
  •

      PHP 3, creado por Andi Gutmans y Zeev Zuraski.
  •

      Motor Zend.
  •

      PHP 4 (año 2000).
  •

      PHP 5 (año 2004).
  •

      Está previsto el lanzamiento en breve de la rama 6 de PHP.
  •

      PHP 4 perderá su estado de estable el 31 de diciembre del 2007.
  •




                              ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Introducción a PHP5.
      Soporte sólido para Programación Orientada a Objetos (o OOP) con PHP.
  •

      Data Objects.
  •

      Mejoras de rendimiento.
  •

      Mejor soporte para MySQL con extensión de rewrite completa.
  •

      Mejor soporte a XML (XPath, DOM, entre otros).
  •

      Soporte nativo para SQLite.
  •

      Soporte integrado para SOAP.
  •

      Iteradores de datos.
  •

      Excepciones de errores.
  •




                                ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 PHP5 y Programación Orientación a Objetos.
  PHP5 soporta una gran cantidad de funcionalidades para OOP.
      Métodos constructores y destructores.
  •

      Métodos setter y getter.
  •

      Métodos mágicos.
  •

      Clases, objetos y variables estáticas, privadas y protegidas.
  •

      Clases abstractas.
  •

      Interfaces.
  •

      Abstracción de datos.
  •

      Standard PHP Library (SPL).
  •

      Clases extendidas, excepciones, iteradores.
  •




                                 ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Patrones de diseño.
  Los patrones son simples soluciones a problemas recurrentes que ocurren una y otra 
  vez en nuestro entorno.

  Luego de llegar a la solución, encapsulamos todas las variables y factores para llegar 
  a la solución y disponemos de una “receta” para resolver mil veces el problema sin 
  tener que “reinventar la rueda”.

  Los  desarrolladores  los  usan  como  una  forma  de  reutilizar  la  experiencia, 
  clasificando  las  soluciones  bajo  “términos”  de  común  denominación  ¿Un 
  diccionario?, eso lo haces con un singleton+registry pattern.

  Causando además, un idioma común entre programadores de distintos lenguajes.



                                          Uno de los principales precursores del movimiento
                                            acerca de los Design Patterns fue Martin Fowler.


                             ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Patrones de diseño :: Continuación.

  En el área de patrones de diseño hablamos de solventar problemas de:


      Interfaz gráfica.
  ●




      Optimización de Código.
  ●




      Reutilización de componentes.
  ●




      Simplicidad de las soluciones.
  ●




                            ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Uso de los patrones de diseño.
  Los patrones de diseño nos permiten: 
      Extensibilidad.
  •

      Flexibilidad.
  •

      Concurrencia.
  •

      Organización.
  •

      Soluciones ya probadas y efectivas.
  •

      Mayor facilidad para hacer cambios.
  •

      Reutilización.
  •

      Refactorización.
  •

      Idioma común de intercambio de soluciones.
  •

      Buenas prácticas en el desarrollo de Software.
  •



                              ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Ideas básicas en el desarrollo de aplicaciones.

  Lo que se logra en toda aplicación, al implementar patrones es que, en conjunto con 
  la programación Orientada a Objetos (OOP):

      Encapsulemos la lógica de la aplicación de tal manera que sea 
  ●


      innecesario pensar a bajo nivel.
      (¿Tendré que escribir una función que haga eso?)

      Desviarse de la lógica de mi aplicación.
  ●

      (¿Para implementar AJAX debo usar otra cosa?)

      Preocuparse únicamente por la “operatividad de la aplicación” 
  ●

      (¿Funcionará esa implementación de roles y seguridad que me “inventé”?).

      Lograr una flexibilidad sin límites
  ●

      (¿Funcionará ese objeto en otro proyecto futuro?).



                               ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Clasificación de los patrones de diseño.

  De creación:
  Como se crean instancias de los objetos y/o como se implementan.
      Singleton, Multiton, Facade.
  •

  Estructurales:
  Como se relacionan y combinan las clases para crear nuevas estructuras.
      Abtract Factory, Visitor, Facade, Flyweight, Adapter.
  •

  De comportamiento:
  Como interactúan y cooperan las clases.
      Decorator, Memento, Chain of Responsability, Flyweight, Adapter.
  •




                              ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Clasificación de los patrones de diseño :: Continuación.

  De ámbito:
  De Como se utilizan dinámicamente los Objetos.
      Delegator, Observer, Interpreter, Visitor.
  •

  De operación
  De como se comportará la aplicación.
      Business Logic, Proxy Adapter, Front Controller, Model­View Controller.
  •




                               ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 MVC (Model view controller).

  1) Patrón de diseño orientado a objetos.
  2) Describe  cualquier  aplicación  con  interacción  humana  y  es  particularmente 
    adecuado para aplicaciones Web.
  3) Separa clara y consistentemente las quot;preocupacionesquot;:
    1) Modelo (Model) ­ Interacción con la base de datos.
    2) Vista (View) ­ Presentación de la información al usuario.
    3) Controlador (Controller) ­ Flujo de información y procesos.


  Si su aplicación no está diseñada siguiendo MVC, inevitablemente tendrá problemas 
                   de escalabilidad, de mantenimiento y de extensión.




                             ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 MVC (Model view controller) :: Continuación.

  • Permite múltiples representaciones (vistas) de la misma información (modelo).
  • De  forma  muy  fácil  permite  agregar,  remover  o  cambiar  interfaces  de  usuarios 
    (vistas).
  • Permite  responder  a  lo  ingresado  por  el  usuario  (controladora)  para  ser 
    fácilmente cambiando.
  • Permite que múltiples desarrollos simultáneamente actualiza la interfaz, la lógica 
    de negocios o introducir un aplicación nueva sin afectar a otros código fuentes.
  • Los cambios pueden suceder dinámicamente en la ejecución de la aplicación.
  • Promete reducir código (ej.  “una vista puede ser usada con diferentes modelos”).
  • Ayuda a enfocar a los desarrolladores en un solo simple aspecto de la aplicación 
    al mismo tiempo.


                              ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 MVC con PHP5.




                  ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 MVC con PHP5 :: Continuación.

  1) Solicitud: El usuario ejecuta un Navegador, pide un URL solicitando a la Aplicación.
  2) Despacha: La Aplicación delega a la capa Controladora la petición del usuario desde 
    el Navegador.
  3) Almacena: Consulta en la capa Modelo por medio a la capa de Datos del manejador 
    de base de datos existente.
  4) Devuelve: La capa de Datos devuelve los resultados en “data pura” a la capa 
    Controladora.
  5) Genera: La capa Controladora genera la capa de Vista en base a los tipos de datos 
    generados por la capa de Datos.
  6) Responde: La Vista generada se envía como respuesta a la solicitud al  Navegador.




                            ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 MVC con PHP5 :: Continuación.




                     ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Clasificación de los patrones de acuerdo a la capa MVC.

  Capa de Datos (Data Layer)
      ORM – ActiveRecord.
  •

      Data Layer.
  •

      Delegator.
  •

  Modelo (Lógica)
      Abstract Factory y Registry.
  •

      Value Object.
  •

      Business Delegate.
  •

      Aggregate Entity.
  •

      Service Locator.
  •

      Strategy.
  •


                              ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Clasificación de los patrones de acuerdo a la capa MVC.

  Controladora
      Inherit Application Controller.
  •

      Front Controller.
  •

      Delegate Controller.
  •

      Service Controller.
  •

  Vista
      Decoration Filter.
  •

      Helper View.
  •

      Composite View.
  •

      Template View.
  •

      Dispatcher View.
  •


                              ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Patterns Design: the Real Life!

 Memento + Singleton ­> Gestión de deshacer,rehacer,historia, transacciones.

 Facade ­> Gestión de documentos de varios tipos en una misma interfaz.

 Facade + Adapter ­> Una única interfaz de acceso para múltiples bases de datos.

 Singleton  +  Registry  ­>  Sistemas  de  Diccionario,  i18n  (Internacionalización), 
 Registros de Sistema y configuración.

 Abstract  +  Composite  +  Helper  View  ­>  Construcción  de  vistas  complejas  a 
 partir de archivos sencillos.

 Observer + State ­> Sistema de gestión online de usuarios.

 Decorator + Composite ­> Sistemas de reportes.

                           ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Patterns Design: the Real Life!

 Abstract Factory + Singleton ­> Fabrica abstracta de controles complejos.

 Flyweight ­> Gestión de vistas y uso de class (CSS) y IDREF (XML).

 Iterator + Data Layer ­> Explorar datos dentro de los objetos sin iterar sobre el 
 objeto en si (ej. Explorar sobre los datos de una DB usando FOREACH).

 Singleton + Decorator + Hierarchical Visitor ­> Gestión de usuarios y Roles.

 Composite  +  Facade  +  Interpreter  ­>  Gestores  de  idiomas  especializados, 
 parsers de funciones.

 Session Facade + Delegator ­> Loggers y gestores de sesiones de usuario.




                          ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Un ejemplo Desglosado (Memento):

 Necesidad:
     Retornar un estado previo 
 ●


     de una operación 
     (operaciones “undo” o 
     “Rollback”).
     Retonar a estados 
 ●


     “específicos” del objeto 
     (History).
     Crear estados de “guardado 
 ●


     temporal” o “Check points”.

                        ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Un ejemplo Desglosado (Memento):

 Sumario: (Qué debemos identificar):
      Identificar  la  clase  que  posee  la  “habilidad”  de  tomar  un  “snapshot”  de  si 
  ●


      misma. (clase con el rol “Originator”).
      Diseñar  una  clase  que  no  hace  nada  más  que  que  aceptar  y  entregar  los 
  ●


      distintos “snapshots” de objetos (clase con el rol “memento”).
      Diseñar  una  clase  “gestora”  a  la  cual  el  “originator”  puede  preguntar  para 
  ●


      que  retorne  un  “estado”;  puede  causar  que  el “originator”  vuelva a  estados 
      previos (clase con el rol “caretaker”).
      La clase cliente (Originator) sabe “cuando” debe salvarse su snapshot.
  ●



      La clase cuidadora (CareTaker) sabe “como” debe guardarse el snapshot.
  ●



      La clase contenedora (memento) sabe “donde” debe guardarse el snapshot.
  ●




                               ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Un ejemplo Desglosado (Memento):

 Estructura:




                     ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Un ejemplo Desglosado (Memento):

 Estructura: (Continuación):
 Diagrama de Secuencia:
     El  objeto  (originator)  pide  un  “checkpoint”  o  revisión  inicial  a  su 
 ●


     custodio (caretaker).
     El  custodio  (caretaker)  toma  el  objeto  actual  y  guarda  una  copia  en 
 ●


     una clase estática memento (Set).
     Si el cliente desea un “rollback” o deshacer una acción, simplemente 
 ●


     le  solicita  al  custodio  retornar  a  un  estado  previo  y  este  “extrae”  del 
     memento  el  estado  solicitado;  borra  de  memoria  (haciendo  el 
     checkpoint  respecto  para  posibles  “redo”)  el  Originator  actual  y  lo 
     reemplaza con el extraído desde el memento.

                             ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Un ejemplo Desglosado (Memento):

 Implementación:
     Cada objeto puede llamar “estáticamente” a un “memento object” (Checkpoint State) 
 ●


     usando  una  clase  “pasarela”  llamada  Caretaker,  que  toma  las  funciones  de 
     monitorización del objeto base (Originator); inicialmente el objeto crea una copia de 
     si mismo dentro del memento (primer estado).
     Memento  Object  puede  simplemente  recibir  (en  un  arreglo  estático)  nuevas  copias 
 ●


     (snapshots)  del  objeto  base  (Originator)  e  indizarlas  para  su  obtención  rápida 
     (unlimited undo y lista de historia).
     Memento debe ser “opaco”; es decir, solamente debe saber que guardó un estado de 
 ●


     un objeto, sin averiguar que tipo de objeto guardó (Claro que guardando el índice de 
     “a quien” guardó); adicionalmente, el cliente (Originator) desconoce la naturaleza del 
     memento (se entiende con él a través del “caretaker”).

                        Para más implementaciones les recomiendo que visiten
                                      www.phppatterns.com

                               ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 De lo horrible a practico :: El Camino MVC en 10 pasos
 1. Desarrollas  proceduralmente  según  tu  manual  de  10  días  de  PHP3,  mezclas  HTML, 
    código de conexión a la base de datos, loops sobre resultsets, lógica condicional, estilo 
    (CSS) en una misma página.
 2. Te das cuenta que si abstraes proceduralmente la lógica de conexión a datos (conectar, 
    consultar, insertar, borrar) podrás cambiar de DB sin traumas (eso dices tú).
 3. ¿Si abstraes la lógica también, no será mejor?, ¡nacen los includes infinitos!.
 4. ¿Y si centralizo esta clase en un objeto?, ¡puedo tener varias instancias!.
 5. Creo que la clase hace mucho, ¿por que no la separamos y reducimos el acoplamiento 
    de los objetos?.
 6. Dos objetos diferentes tienen propiedades similares, ¿Por qué no una clase abstracta?.
 7. ¿Puedo  gestionar  todo  desde  una  clase  única  de  registro?,  configuraciones  únicas  y 
    Controladora Frontal.


                               ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 De lo horrible a practico :: El Camino MVC en 10 pasos
 8. Te  das  cuenta  que  si  separas  el  código  HTML  de  las  clases  de  la  aplicación,  puedes 
    tener otros tipos de vistas (PDF, XML, WSDL, GTK, entre otros).
 9. Tu  gran  aplicación  consiste  en  miles  de  clases,  unidas  entre  sí  (alta  cohesión)  en 
    distintas  capas  (n­tier),  con  pocas  relaciones  entre  ellas  (bajo  acoplamiento),  que 
    interactúan  unas  con  otras  sin  conocerse  (alta  composición),  muy  genéricas  (baja 
    implementación)  y  con  estándares  seguros  sobre  ordenamiento,  nombres  de 
    funciones (interfaces) y seguimiento de patrones.
 10. ¡Felicidades!, haz llegado a MVC! ... ¿y ahora ... que?




                                 ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 De lo horrible a practico :: Frameworks

  Un  Framework,  “Marco  de  Trabajo”  o  WAF  (Web  Application  Framework),  es  una 
  serie de librerías (toolkits) que se han unido bajo un único esquema de colaboración 
  para  que  de  manera  rápida  (RAD:  Rapid  Application  Development)  logremos 
  desarrollar nuestras aplicaciones.


  Entre las ventajas se cuenta:
      No  hay  que  definir  “marco  de  desarrollo”,  solo  “rellenar”  los  huecos  que  los 
  •

      frameworks nos indican.
      Trabajamos sobre un Estándar que miles de personas ya conocen.
  •

      Facilidad para encontrar herramientas, librerías o documentación.
  •

      Relación Coste de aprendizaje vs. Aplicabilidad mínima.
  •



                                ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 De lo horrible a practico :: Frameworks
  Algunos Framework MVC:

      Solar.
  •


      CakePHP.
  •


      CodeIgniter.
  •


      Symfony.
  •


      PHP on Trax.
  •


      Zend Framework.
  •


      Agavi, entre otros...
  •




                              ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Comparativa de 10 Framework en PHP




                    ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Conclusiones
  El desarrollo de web aplicaciones mezcla es un conjunto de tecnologías,  estándares 
  y normativas de accesibilidad, reusabilidad y operatividad de la Web que se deben 
  cumplir para evitar posteriores “dolores de cabeza” por desconocimiento del entorno 
  de despliegue de la aplicación, es decir la Web.


  Los patrones de diseño, es una forma simple de resolver problemas cotidianos y que 
  que  son  muy  repetitivos  en  nuestro  entorno.  No  requiere  una  implantación  con 
  lenguaje de programación por lo que ofrece, un idioma común entre programadores 
  de distintos lenguajes.




                             ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Conclusiones :: Continuación.
  La programación MVC aplicada a la web no es una opción, ¡es una necesidad!


  ¿Por que?
      Desarrollas para una interfaz, no para una implementación.
  •

      Todo tu equipo se dedica a su especialidad preferida.
  •

      Desarrollo sostenible y mantenible.
  •

      Es posible migrar en diferentes direcciones.
  •

      Evolución rápida de la aplicación.
  •

      ¡Terminas más rápido!.
  •




                               ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Conclusiones :: Continuación.
  Los llamados “Framework” o , “WAF”, es una serie de librerías (toolkits) que se han 
  unido  bajo  un  único  esquema  de  colaboración  para  que  de  manera  rápida  (RAD: 
  Rapid Application Development) logremos desarrollar nuestras aplicaciones.




                             ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Sitios en Internet :: Continuación
 Definiciones básicas
       Desarrollo de software ­ Wikipedia (http://es.wikipedia.org/wiki/Desarrollo_de_software)
   •

       * Diseño web ­ Wikipedia (http://es.wikipedia.org/wiki/Diseno_web)
   •

       Desarrollo web ­ Wikipedia (http://es.wikipedia.org/wiki/Desarrollo_web)
   •

       Aplicación web ­ Wikipedia (http://es.wikipedia.org/wiki/Aplicacion_web)
   •

       Patrones de diseño con PHP5 (http://www.phppatterns.com/)
   •

       Charla “Desarrollo de Aplicaciones Web con Perl ­ Simplicidad, Productividad y 
   •

       Elegancia”, Copyright (c) 2004­2006, Ernesto Hernández­Novich, VELUG, Caracas Perl 
       Mongers. <emhn@usb.ve>
       Charla “Desarrollo web en Python usando el framework Django” ­ Blog de MilMazz
   •

            (http://www.milmazz.com/)




                               ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5

 Sitios en Internet :: Continuación
 Patrones de Diseño
       * Patrón de diseño ­ Wikipedia (http://es.wikipedia.org/wiki/Patron_de_diseno)
   •

       Design pattern (computer science) ­ Wikipedia 
   •

            (http://en.wikipedia.org/wiki/Design_pattern_(computer_science))
       MVC ­ Wikipedia (http://es.wikipedia.org/wiki/MVC)
   •

       Model View Controller ­ Wikipedia (http://en.wikipedia.org/wiki/Model­view­controller)
   •

       Patrones de Diseño (http://home.earthlink.net/~huston2/dp/patterns.html)
   •




                               ¡Desarrollo rápido de aplicaciones!
Patrones de diseño y Orientación a Objetos en PHP5


          ¡Gracias por su atención!
                     ¡Visita nuestros Blog!
                  http://lcaballero.8k.com/
             http://www.jesuslara.com.ve/blog/

                ¡Visita y descarga este trabajo!
        https://finde.gob.ve/projects/lcaballero­doc/

                           ¡Escribenos!
                  leonardocaballero@gmail.com
                      jesuslara@gmail.com


                   ¡Desarrollo rápido de aplicaciones!

Más contenido relacionado

La actualidad más candente

Desarrollo Rápido y Pruebas Web con Mozilla Firefox
Desarrollo Rápido y Pruebas Web con Mozilla FirefoxDesarrollo Rápido y Pruebas Web con Mozilla Firefox
Desarrollo Rápido y Pruebas Web con Mozilla Firefox
Leonardo J. Caballero G.
 
09 Joomla. E Joomlatensiones De Terceros
09 Joomla. E Joomlatensiones De Terceros09 Joomla. E Joomlatensiones De Terceros
09 Joomla. E Joomlatensiones De Terceros
José M. Padilla
 
Introducción general a Drupal
Introducción general a DrupalIntroducción general a Drupal
Introducción general a Drupal
Pedro Cambra
 
Blogs, Plataformas y otras herramientas web para entornos educativos
Blogs, Plataformas y otras herramientas web para entornos educativosBlogs, Plataformas y otras herramientas web para entornos educativos
Blogs, Plataformas y otras herramientas web para entornos educativos
Luis Barriocanal
 
Presentación del proyecto Joomla! en el congreso Hispalinux - Cáceres - 14-1...
Presentación del proyecto Joomla!  en el congreso Hispalinux - Cáceres - 14-1...Presentación del proyecto Joomla!  en el congreso Hispalinux - Cáceres - 14-1...
Presentación del proyecto Joomla! en el congreso Hispalinux - Cáceres - 14-1...
Knowmades.com
 
Presentacion doscero
Presentacion dosceroPresentacion doscero
Presentacion doscero
Adolfo Cs
 
Dominio
DominioDominio
Dominio
martalastra98
 
La Web Orientada a Componentes
La Web Orientada a ComponentesLa Web Orientada a Componentes
La Web Orientada a Componentes
Javier Vélez Reyes
 
Exposicion De Joomla Manuel Lopez
Exposicion De Joomla Manuel LopezExposicion De Joomla Manuel Lopez
Exposicion De Joomla Manuel Lopez
frias17
 
Prototipado
PrototipadoPrototipado
Html5
Html5Html5
Que es Diseño web
Que es Diseño webQue es Diseño web
Que es Diseño web
paoloarevaloortiz
 
Arquitecturas de Componentes Web. Patrones de Composición
Arquitecturas de Componentes Web. Patrones de ComposiciónArquitecturas de Componentes Web. Patrones de Composición
Arquitecturas de Componentes Web. Patrones de Composición
Javier Vélez Reyes
 
Desarrollo de la web
Desarrollo de la webDesarrollo de la web
Joomla! Cms
Joomla! CmsJoomla! Cms
Joomla! Cms
miguelgonzalez
 
Pluguins
PluguinsPluguins

La actualidad más candente (16)

Desarrollo Rápido y Pruebas Web con Mozilla Firefox
Desarrollo Rápido y Pruebas Web con Mozilla FirefoxDesarrollo Rápido y Pruebas Web con Mozilla Firefox
Desarrollo Rápido y Pruebas Web con Mozilla Firefox
 
09 Joomla. E Joomlatensiones De Terceros
09 Joomla. E Joomlatensiones De Terceros09 Joomla. E Joomlatensiones De Terceros
09 Joomla. E Joomlatensiones De Terceros
 
Introducción general a Drupal
Introducción general a DrupalIntroducción general a Drupal
Introducción general a Drupal
 
Blogs, Plataformas y otras herramientas web para entornos educativos
Blogs, Plataformas y otras herramientas web para entornos educativosBlogs, Plataformas y otras herramientas web para entornos educativos
Blogs, Plataformas y otras herramientas web para entornos educativos
 
Presentación del proyecto Joomla! en el congreso Hispalinux - Cáceres - 14-1...
Presentación del proyecto Joomla!  en el congreso Hispalinux - Cáceres - 14-1...Presentación del proyecto Joomla!  en el congreso Hispalinux - Cáceres - 14-1...
Presentación del proyecto Joomla! en el congreso Hispalinux - Cáceres - 14-1...
 
Presentacion doscero
Presentacion dosceroPresentacion doscero
Presentacion doscero
 
Dominio
DominioDominio
Dominio
 
La Web Orientada a Componentes
La Web Orientada a ComponentesLa Web Orientada a Componentes
La Web Orientada a Componentes
 
Exposicion De Joomla Manuel Lopez
Exposicion De Joomla Manuel LopezExposicion De Joomla Manuel Lopez
Exposicion De Joomla Manuel Lopez
 
Prototipado
PrototipadoPrototipado
Prototipado
 
Html5
Html5Html5
Html5
 
Que es Diseño web
Que es Diseño webQue es Diseño web
Que es Diseño web
 
Arquitecturas de Componentes Web. Patrones de Composición
Arquitecturas de Componentes Web. Patrones de ComposiciónArquitecturas de Componentes Web. Patrones de Composición
Arquitecturas de Componentes Web. Patrones de Composición
 
Desarrollo de la web
Desarrollo de la webDesarrollo de la web
Desarrollo de la web
 
Joomla! Cms
Joomla! CmsJoomla! Cms
Joomla! Cms
 
Pluguins
PluguinsPluguins
Pluguins
 

Destacado

Introducción a Plone y Zope - v0.1.8
Introducción a Plone y Zope - v0.1.8Introducción a Plone y Zope - v0.1.8
Introducción a Plone y Zope - v0.1.8
Leonardo J. Caballero G.
 
Redes Sociales y Web 2.0
Redes Sociales y Web 2.0Redes Sociales y Web 2.0
Redes Sociales y Web 2.0
Leonardo J. Caballero G.
 
PloneGov y experiencias en Venezuela
PloneGov y experiencias en VenezuelaPloneGov y experiencias en Venezuela
PloneGov y experiencias en Venezuela
Leonardo J. Caballero G.
 
Sistemas que reflejen perfiles sociales y aportes al proyecto Canaima
Sistemas que reflejen perfiles sociales y aportes al proyecto CanaimaSistemas que reflejen perfiles sociales y aportes al proyecto Canaima
Sistemas que reflejen perfiles sociales y aportes al proyecto Canaima
Leonardo J. Caballero G.
 
Mesa de trabajo Plataforma Web de Canaima GNU/Linux
Mesa de trabajo Plataforma Web de Canaima GNU/LinuxMesa de trabajo Plataforma Web de Canaima GNU/Linux
Mesa de trabajo Plataforma Web de Canaima GNU/Linux
Leonardo J. Caballero G.
 
Diseño Gráfico Digital en Software Libre v3.21
Diseño Gráfico Digital en Software Libre v3.21Diseño Gráfico Digital en Software Libre v3.21
Diseño Gráfico Digital en Software Libre v3.21
Leonardo J. Caballero G.
 
El Proyecto Canaima GNU/Linux
El Proyecto Canaima GNU/LinuxEl Proyecto Canaima GNU/Linux
El Proyecto Canaima GNU/Linux
Leonardo J. Caballero G.
 
¿Que es Software Libre? - v3.9.4
¿Que es Software Libre? - v3.9.4¿Que es Software Libre? - v3.9.4
¿Que es Software Libre? - v3.9.4
Leonardo J. Caballero G.
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
Omer Kilic
 
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the ArduinoArduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Eoin Brazil
 
Identificación de armas de fuego y balística
Identificación de armas de fuego y balísticaIdentificación de armas de fuego y balística
Identificación de armas de fuego y balística
StevenMontalvo
 
Balistica de laboratorio
Balistica de laboratorioBalistica de laboratorio
Balistica de laboratorio
3diths
 

Destacado (12)

Introducción a Plone y Zope - v0.1.8
Introducción a Plone y Zope - v0.1.8Introducción a Plone y Zope - v0.1.8
Introducción a Plone y Zope - v0.1.8
 
Redes Sociales y Web 2.0
Redes Sociales y Web 2.0Redes Sociales y Web 2.0
Redes Sociales y Web 2.0
 
PloneGov y experiencias en Venezuela
PloneGov y experiencias en VenezuelaPloneGov y experiencias en Venezuela
PloneGov y experiencias en Venezuela
 
Sistemas que reflejen perfiles sociales y aportes al proyecto Canaima
Sistemas que reflejen perfiles sociales y aportes al proyecto CanaimaSistemas que reflejen perfiles sociales y aportes al proyecto Canaima
Sistemas que reflejen perfiles sociales y aportes al proyecto Canaima
 
Mesa de trabajo Plataforma Web de Canaima GNU/Linux
Mesa de trabajo Plataforma Web de Canaima GNU/LinuxMesa de trabajo Plataforma Web de Canaima GNU/Linux
Mesa de trabajo Plataforma Web de Canaima GNU/Linux
 
Diseño Gráfico Digital en Software Libre v3.21
Diseño Gráfico Digital en Software Libre v3.21Diseño Gráfico Digital en Software Libre v3.21
Diseño Gráfico Digital en Software Libre v3.21
 
El Proyecto Canaima GNU/Linux
El Proyecto Canaima GNU/LinuxEl Proyecto Canaima GNU/Linux
El Proyecto Canaima GNU/Linux
 
¿Que es Software Libre? - v3.9.4
¿Que es Software Libre? - v3.9.4¿Que es Software Libre? - v3.9.4
¿Que es Software Libre? - v3.9.4
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the ArduinoArduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
 
Identificación de armas de fuego y balística
Identificación de armas de fuego y balísticaIdentificación de armas de fuego y balística
Identificación de armas de fuego y balística
 
Balistica de laboratorio
Balistica de laboratorioBalistica de laboratorio
Balistica de laboratorio
 

Similar a Patrones de diseño y Orientación a Objetos en PHP5 - v0.2.9

Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHP
Arsys
 
2015 presentation corporate_alfa9_cast
2015 presentation corporate_alfa9_cast2015 presentation corporate_alfa9_cast
2015 presentation corporate_alfa9_cast
iñaki bermejo
 
Diseño de la web
Diseño de la webDiseño de la web
Diseño de la web
adri9610
 
ALFA9 Presentación Corporativa de Servicios 2014
ALFA9 Presentación Corporativa de Servicios 2014ALFA9 Presentación Corporativa de Servicios 2014
ALFA9 Presentación Corporativa de Servicios 2014
iñaki bermejo
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
Jorge Antonio Linares Vera
 
¿Openerp y CMS? RadioTV
¿Openerp y CMS? RadioTV¿Openerp y CMS? RadioTV
¿Openerp y CMS? RadioTV
raimonesteve
 
Tarea 6
Tarea 6Tarea 6
Taller de zan php
Taller de zan phpTaller de zan php
Taller de zan php
programadoresmx
 
Lp II clase01 - Desarrollo de software con RUP
Lp II   clase01 - Desarrollo de software con RUPLp II   clase01 - Desarrollo de software con RUP
Lp II clase01 - Desarrollo de software con RUP
AngelDX
 
Silabo de Programación Web 1
Silabo de Programación Web 1Silabo de Programación Web 1
Silabo de Programación Web 1
Wacho Jibaja Olvera
 
Silabo programacion eb I
Silabo programacion eb ISilabo programacion eb I
Silabo programacion eb I
José Quintana Moreno
 
Silabo programacion Web I
Silabo programacion Web ISilabo programacion Web I
Silabo programacion Web I
José Quintana Moreno
 
Modulo1-Presentaciones-parte01.1.ppt
Modulo1-Presentaciones-parte01.1.pptModulo1-Presentaciones-parte01.1.ppt
Modulo1-Presentaciones-parte01.1.ppt
ssuser73f459
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidad
Raelyx Cordero
 
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nube
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nubeMsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nube
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nube
Miguel Tabera
 
Mvc
MvcMvc
Dinamicas
DinamicasDinamicas
Dinamicas
marcesevilla
 
Emprendiendo con Wordpress
Emprendiendo con WordpressEmprendiendo con Wordpress
Emprendiendo con Wordpress
Ytzvan Mastino
 
HTML
HTMLHTML
PROGRAMACION PHP
PROGRAMACION PHPPROGRAMACION PHP
PROGRAMACION PHP
Karla Ordoñez
 

Similar a Patrones de diseño y Orientación a Objetos en PHP5 - v0.2.9 (20)

Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHP
 
2015 presentation corporate_alfa9_cast
2015 presentation corporate_alfa9_cast2015 presentation corporate_alfa9_cast
2015 presentation corporate_alfa9_cast
 
Diseño de la web
Diseño de la webDiseño de la web
Diseño de la web
 
ALFA9 Presentación Corporativa de Servicios 2014
ALFA9 Presentación Corporativa de Servicios 2014ALFA9 Presentación Corporativa de Servicios 2014
ALFA9 Presentación Corporativa de Servicios 2014
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
¿Openerp y CMS? RadioTV
¿Openerp y CMS? RadioTV¿Openerp y CMS? RadioTV
¿Openerp y CMS? RadioTV
 
Tarea 6
Tarea 6Tarea 6
Tarea 6
 
Taller de zan php
Taller de zan phpTaller de zan php
Taller de zan php
 
Lp II clase01 - Desarrollo de software con RUP
Lp II   clase01 - Desarrollo de software con RUPLp II   clase01 - Desarrollo de software con RUP
Lp II clase01 - Desarrollo de software con RUP
 
Silabo de Programación Web 1
Silabo de Programación Web 1Silabo de Programación Web 1
Silabo de Programación Web 1
 
Silabo programacion eb I
Silabo programacion eb ISilabo programacion eb I
Silabo programacion eb I
 
Silabo programacion Web I
Silabo programacion Web ISilabo programacion Web I
Silabo programacion Web I
 
Modulo1-Presentaciones-parte01.1.ppt
Modulo1-Presentaciones-parte01.1.pptModulo1-Presentaciones-parte01.1.ppt
Modulo1-Presentaciones-parte01.1.ppt
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidad
 
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nube
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nubeMsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nube
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nube
 
Mvc
MvcMvc
Mvc
 
Dinamicas
DinamicasDinamicas
Dinamicas
 
Emprendiendo con Wordpress
Emprendiendo con WordpressEmprendiendo con Wordpress
Emprendiendo con Wordpress
 
HTML
HTMLHTML
HTML
 
PROGRAMACION PHP
PROGRAMACION PHPPROGRAMACION PHP
PROGRAMACION PHP
 

Más de Leonardo J. Caballero G.

Introducción a Plone CMS - FLISOL Mérida 2024
Introducción a Plone CMS - FLISOL Mérida 2024Introducción a Plone CMS - FLISOL Mérida 2024
Introducción a Plone CMS - FLISOL Mérida 2024
Leonardo J. Caballero G.
 
Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024
Leonardo J. Caballero G.
 
Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024
Leonardo J. Caballero G.
 
Plone 6 Themes
Plone 6 ThemesPlone 6 Themes
Plone 6 Themes
Leonardo J. Caballero G.
 
Tecnologías open source como herramientas operativas en la transformación dig...
Tecnologías open source como herramientas operativas en la transformación dig...Tecnologías open source como herramientas operativas en la transformación dig...
Tecnologías open source como herramientas operativas en la transformación dig...
Leonardo J. Caballero G.
 
¿Qué es Hardware Abierto? - v2.0
¿Qué es Hardware Abierto? - v2.0¿Qué es Hardware Abierto? - v2.0
¿Qué es Hardware Abierto? - v2.0
Leonardo J. Caballero G.
 
Del uso de la tecnología a la innovación tecnológica - v0.1
Del uso de la tecnología a la innovación tecnológica - v0.1Del uso de la tecnología a la innovación tecnológica - v0.1
Del uso de la tecnología a la innovación tecnológica - v0.1
Leonardo J. Caballero G.
 
Introducción a Plone - Pycon Chile 2021
Introducción a Plone - Pycon Chile 2021Introducción a Plone - Pycon Chile 2021
Introducción a Plone - Pycon Chile 2021
Leonardo J. Caballero G.
 
World Plone Day 2021, soluciones empresariales hoy en día
World Plone Day 2021, soluciones empresariales hoy en díaWorld Plone Day 2021, soluciones empresariales hoy en día
World Plone Day 2021, soluciones empresariales hoy en día
Leonardo J. Caballero G.
 
Plone CMS, novedades y flexibilidad para soluciones empresariales hoy en día
Plone CMS, novedades y flexibilidad para soluciones empresariales hoy en díaPlone CMS, novedades y flexibilidad para soluciones empresariales hoy en día
Plone CMS, novedades y flexibilidad para soluciones empresariales hoy en día
Leonardo J. Caballero G.
 
¿Qué es Software Libre? - v4.0
¿Qué es Software Libre? - v4.0¿Qué es Software Libre? - v4.0
¿Qué es Software Libre? - v4.0
Leonardo J. Caballero G.
 
Traducción Asistidas con Computadoras en Software Libre
Traducción Asistidas con Computadoras en Software LibreTraducción Asistidas con Computadoras en Software Libre
Traducción Asistidas con Computadoras en Software Libre
Leonardo J. Caballero G.
 
Sistema de gestión de contenidos Plone CMS - Día de Plone en Venezuela 2013
Sistema de gestión de contenidos Plone CMS - Día de Plone en Venezuela 2013Sistema de gestión de contenidos Plone CMS - Día de Plone en Venezuela 2013
Sistema de gestión de contenidos Plone CMS - Día de Plone en Venezuela 2013
Leonardo J. Caballero G.
 
Remodelación del sitio Web de Canaima - VII Cayapa Canaima Falcón
Remodelación del sitio Web de Canaima - VII Cayapa Canaima FalcónRemodelación del sitio Web de Canaima - VII Cayapa Canaima Falcón
Remodelación del sitio Web de Canaima - VII Cayapa Canaima Falcón
Leonardo J. Caballero G.
 
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Leonardo J. Caballero G.
 
Plone CMS es chevere!!!
Plone CMS es chevere!!!Plone CMS es chevere!!!
Plone CMS es chevere!!!
Leonardo J. Caballero G.
 
Plone CMS en el Proyecto CANAIMA GNU/Linux
Plone CMS en el Proyecto CANAIMA GNU/LinuxPlone CMS en el Proyecto CANAIMA GNU/Linux
Plone CMS en el Proyecto CANAIMA GNU/Linux
Leonardo J. Caballero G.
 
Plone como un espacio virtual para compartir saberes entre comunidades locale...
Plone como un espacio virtual para compartir saberes entre comunidades locale...Plone como un espacio virtual para compartir saberes entre comunidades locale...
Plone como un espacio virtual para compartir saberes entre comunidades locale...
Leonardo J. Caballero G.
 
Animación vectorial 2D con Software Libre
Animación vectorial 2D con Software LibreAnimación vectorial 2D con Software Libre
Animación vectorial 2D con Software Libre
Leonardo J. Caballero G.
 
Proyecto "Mundo Accesible"
Proyecto "Mundo Accesible"Proyecto "Mundo Accesible"
Proyecto "Mundo Accesible"
Leonardo J. Caballero G.
 

Más de Leonardo J. Caballero G. (20)

Introducción a Plone CMS - FLISOL Mérida 2024
Introducción a Plone CMS - FLISOL Mérida 2024Introducción a Plone CMS - FLISOL Mérida 2024
Introducción a Plone CMS - FLISOL Mérida 2024
 
Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024
 
Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024
 
Plone 6 Themes
Plone 6 ThemesPlone 6 Themes
Plone 6 Themes
 
Tecnologías open source como herramientas operativas en la transformación dig...
Tecnologías open source como herramientas operativas en la transformación dig...Tecnologías open source como herramientas operativas en la transformación dig...
Tecnologías open source como herramientas operativas en la transformación dig...
 
¿Qué es Hardware Abierto? - v2.0
¿Qué es Hardware Abierto? - v2.0¿Qué es Hardware Abierto? - v2.0
¿Qué es Hardware Abierto? - v2.0
 
Del uso de la tecnología a la innovación tecnológica - v0.1
Del uso de la tecnología a la innovación tecnológica - v0.1Del uso de la tecnología a la innovación tecnológica - v0.1
Del uso de la tecnología a la innovación tecnológica - v0.1
 
Introducción a Plone - Pycon Chile 2021
Introducción a Plone - Pycon Chile 2021Introducción a Plone - Pycon Chile 2021
Introducción a Plone - Pycon Chile 2021
 
World Plone Day 2021, soluciones empresariales hoy en día
World Plone Day 2021, soluciones empresariales hoy en díaWorld Plone Day 2021, soluciones empresariales hoy en día
World Plone Day 2021, soluciones empresariales hoy en día
 
Plone CMS, novedades y flexibilidad para soluciones empresariales hoy en día
Plone CMS, novedades y flexibilidad para soluciones empresariales hoy en díaPlone CMS, novedades y flexibilidad para soluciones empresariales hoy en día
Plone CMS, novedades y flexibilidad para soluciones empresariales hoy en día
 
¿Qué es Software Libre? - v4.0
¿Qué es Software Libre? - v4.0¿Qué es Software Libre? - v4.0
¿Qué es Software Libre? - v4.0
 
Traducción Asistidas con Computadoras en Software Libre
Traducción Asistidas con Computadoras en Software LibreTraducción Asistidas con Computadoras en Software Libre
Traducción Asistidas con Computadoras en Software Libre
 
Sistema de gestión de contenidos Plone CMS - Día de Plone en Venezuela 2013
Sistema de gestión de contenidos Plone CMS - Día de Plone en Venezuela 2013Sistema de gestión de contenidos Plone CMS - Día de Plone en Venezuela 2013
Sistema de gestión de contenidos Plone CMS - Día de Plone en Venezuela 2013
 
Remodelación del sitio Web de Canaima - VII Cayapa Canaima Falcón
Remodelación del sitio Web de Canaima - VII Cayapa Canaima FalcónRemodelación del sitio Web de Canaima - VII Cayapa Canaima Falcón
Remodelación del sitio Web de Canaima - VII Cayapa Canaima Falcón
 
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
 
Plone CMS es chevere!!!
Plone CMS es chevere!!!Plone CMS es chevere!!!
Plone CMS es chevere!!!
 
Plone CMS en el Proyecto CANAIMA GNU/Linux
Plone CMS en el Proyecto CANAIMA GNU/LinuxPlone CMS en el Proyecto CANAIMA GNU/Linux
Plone CMS en el Proyecto CANAIMA GNU/Linux
 
Plone como un espacio virtual para compartir saberes entre comunidades locale...
Plone como un espacio virtual para compartir saberes entre comunidades locale...Plone como un espacio virtual para compartir saberes entre comunidades locale...
Plone como un espacio virtual para compartir saberes entre comunidades locale...
 
Animación vectorial 2D con Software Libre
Animación vectorial 2D con Software LibreAnimación vectorial 2D con Software Libre
Animación vectorial 2D con Software Libre
 
Proyecto "Mundo Accesible"
Proyecto "Mundo Accesible"Proyecto "Mundo Accesible"
Proyecto "Mundo Accesible"
 

Último

Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
JimmyTejadaSalizar
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Festibity
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Festibity
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
AMADO SALVADOR
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
julio05042006
 
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialCatalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
AMADO SALVADOR
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
juanchogame18
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
AMADO SALVADOR
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
paulroyal74
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
NajwaNimri1
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
AMADO SALVADOR
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
Festibity
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
bendezuperezjimena
 

Último (20)

Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
 
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialCatalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
 

Patrones de diseño y Orientación a Objetos en PHP5 - v0.2.9

  • 1. Patrones de diseño y Orientación a Objetos en PHP5 ¡Desarrollo rápido de aplicaciones!
  • 2. Patrones de diseño y Orientación a Objetos en PHP5 Licencia Copyright (c)  2006  Anibal Rojas Copyright (c)  2004­2006  Ernesto Hernández­Novich. Modificaciones y adaptaciones.  Copyright (c)  2006, 2007  Leonardo Caballero / Jesús Lara. Permission  is  granted  to  copy,  distribute  and/or  modify  this  document  under  the  terms  of  the  GNU  Free  Documentation  License,  Version  1.2  or  any  later  version  published  by  the  Free  Software Foundation; with no Invariant Sections, no Front­Cover  Texts, and no Back­Cover Texts.  A copy of the license is included  in the section entitled quot;GNU Free Documentation Licensequot;. ¡Desarrollo rápido de aplicaciones!
  • 3. Patrones de diseño y Orientación a Objetos en PHP5 GNU Free Documentation License Puede obtener una copia de la licencia quot;GNU Free Documentation  Licensequot;  en  los  ficheros  llamados  quot;copyright.txtquot;  en  ingles,  quot;copyright.es.txtquot; en español o en los siguientes sitios en Internet: http://www.gnu.org/copyleft/fdl.html • http://www.fsf.org/licensing/licenses/fdl.html • ¡Desarrollo rápido de aplicaciones!
  • 4. Patrones de diseño y Orientación a Objetos en PHP5 Definiciones básicas Estas definiciones son más importante de lo que parece.  Desarrollo de software. • Diseño Web. • Desarrollo Web. • Aplicación Web. • ¡Desarrollo rápido de aplicaciones!
  • 6. Patrones de diseño y Orientación a Objetos en PHP5 Funcionamiento básico de una Aplicación Web. Desde el punto de vista del Usuario: 1) El usuario abre un URL. 2) Llena un formulario. 3) Oprime alguno de los botones. 4) La aplicación genera un nuevo formulario con resultados. ¡Desarrollo rápido de aplicaciones!
  • 7. Patrones de diseño y Orientación a Objetos en PHP5 Funcionamiento básico de una Aplicación Web :: Continuación. Es un documento .php La página se  ejecuta y  Solicita un  cambia  Documento código  HTML La página HTML se  envía al cliente ¡Desarrollo rápido de aplicaciones!
  • 8. Patrones de diseño y Orientación a Objetos en PHP5 Funcionamiento básico de una Aplicación Web :: Continuación. Módulo de Funciones Base de  ODBC Datos Motor  Zend 2 1 3 Compila  6 4 Interfase del servidor 5 Ejecuta ¡Desarrollo rápido de aplicaciones!
  • 10. Patrones de diseño y Orientación a Objetos en PHP5 Factibilidad para el desarrollo de Aplicaciones Web. • ¿Cuánto cuesta encontrar un programador que sepa todo eso? • ¿Cuánto cuesta mantener toda esta mezcla de multilenguaje? • ¿En cuanto tiempo puede ofrecer al cliente un prototipo de la aplicación? • ¿Cuanto tiempo necesita para cambiar toda la interfaz de usuario de la aplicación  a las necesidades del cliente? • ¿Puede  garantizar  que  la  aplicación  cumpla  con  los  estándares  y  normativas  de  accesibilidad, reusabilidad y operatividad de la Web? ¡Si no sabes responder a estas preguntas con respuestas a tiempos  cortos, prácticos y razonables, ya entiendes el gran problema! ¡Desarrollo rápido de aplicaciones!
  • 11. Patrones de diseño y Orientación a Objetos en PHP5 Hablemos de PHP. Originalmente PHP fue siglas de Personal Home Page Tools. • Creado en 1995 por Rasmu Lerdorf. • Año 1997, cambios significativos. • Al redefinirse el motor recibió las siglas del acrónimo Hypertext Pre Processor • PHP 3, creado por Andi Gutmans y Zeev Zuraski. • Motor Zend. • PHP 4 (año 2000). • PHP 5 (año 2004). • Está previsto el lanzamiento en breve de la rama 6 de PHP. • PHP 4 perderá su estado de estable el 31 de diciembre del 2007. • ¡Desarrollo rápido de aplicaciones!
  • 12. Patrones de diseño y Orientación a Objetos en PHP5 Introducción a PHP5. Soporte sólido para Programación Orientada a Objetos (o OOP) con PHP. • Data Objects. • Mejoras de rendimiento. • Mejor soporte para MySQL con extensión de rewrite completa. • Mejor soporte a XML (XPath, DOM, entre otros). • Soporte nativo para SQLite. • Soporte integrado para SOAP. • Iteradores de datos. • Excepciones de errores. • ¡Desarrollo rápido de aplicaciones!
  • 13. Patrones de diseño y Orientación a Objetos en PHP5 PHP5 y Programación Orientación a Objetos. PHP5 soporta una gran cantidad de funcionalidades para OOP. Métodos constructores y destructores. • Métodos setter y getter. • Métodos mágicos. • Clases, objetos y variables estáticas, privadas y protegidas. • Clases abstractas. • Interfaces. • Abstracción de datos. • Standard PHP Library (SPL). • Clases extendidas, excepciones, iteradores. • ¡Desarrollo rápido de aplicaciones!
  • 14. Patrones de diseño y Orientación a Objetos en PHP5 Patrones de diseño. Los patrones son simples soluciones a problemas recurrentes que ocurren una y otra  vez en nuestro entorno. Luego de llegar a la solución, encapsulamos todas las variables y factores para llegar  a la solución y disponemos de una “receta” para resolver mil veces el problema sin  tener que “reinventar la rueda”. Los  desarrolladores  los  usan  como  una  forma  de  reutilizar  la  experiencia,  clasificando  las  soluciones  bajo  “términos”  de  común  denominación  ¿Un  diccionario?, eso lo haces con un singleton+registry pattern. Causando además, un idioma común entre programadores de distintos lenguajes. Uno de los principales precursores del movimiento acerca de los Design Patterns fue Martin Fowler. ¡Desarrollo rápido de aplicaciones!
  • 15. Patrones de diseño y Orientación a Objetos en PHP5 Patrones de diseño :: Continuación. En el área de patrones de diseño hablamos de solventar problemas de: Interfaz gráfica. ● Optimización de Código. ● Reutilización de componentes. ● Simplicidad de las soluciones. ● ¡Desarrollo rápido de aplicaciones!
  • 16. Patrones de diseño y Orientación a Objetos en PHP5 Uso de los patrones de diseño. Los patrones de diseño nos permiten:  Extensibilidad. • Flexibilidad. • Concurrencia. • Organización. • Soluciones ya probadas y efectivas. • Mayor facilidad para hacer cambios. • Reutilización. • Refactorización. • Idioma común de intercambio de soluciones. • Buenas prácticas en el desarrollo de Software. • ¡Desarrollo rápido de aplicaciones!
  • 17. Patrones de diseño y Orientación a Objetos en PHP5 Ideas básicas en el desarrollo de aplicaciones. Lo que se logra en toda aplicación, al implementar patrones es que, en conjunto con  la programación Orientada a Objetos (OOP): Encapsulemos la lógica de la aplicación de tal manera que sea  ● innecesario pensar a bajo nivel. (¿Tendré que escribir una función que haga eso?) Desviarse de la lógica de mi aplicación. ● (¿Para implementar AJAX debo usar otra cosa?) Preocuparse únicamente por la “operatividad de la aplicación”  ● (¿Funcionará esa implementación de roles y seguridad que me “inventé”?). Lograr una flexibilidad sin límites ● (¿Funcionará ese objeto en otro proyecto futuro?). ¡Desarrollo rápido de aplicaciones!
  • 18. Patrones de diseño y Orientación a Objetos en PHP5 Clasificación de los patrones de diseño. De creación: Como se crean instancias de los objetos y/o como se implementan. Singleton, Multiton, Facade. • Estructurales: Como se relacionan y combinan las clases para crear nuevas estructuras. Abtract Factory, Visitor, Facade, Flyweight, Adapter. • De comportamiento: Como interactúan y cooperan las clases. Decorator, Memento, Chain of Responsability, Flyweight, Adapter. • ¡Desarrollo rápido de aplicaciones!
  • 19. Patrones de diseño y Orientación a Objetos en PHP5 Clasificación de los patrones de diseño :: Continuación. De ámbito: De Como se utilizan dinámicamente los Objetos. Delegator, Observer, Interpreter, Visitor. • De operación De como se comportará la aplicación. Business Logic, Proxy Adapter, Front Controller, Model­View Controller. • ¡Desarrollo rápido de aplicaciones!
  • 20. Patrones de diseño y Orientación a Objetos en PHP5 MVC (Model view controller). 1) Patrón de diseño orientado a objetos. 2) Describe  cualquier  aplicación  con  interacción  humana  y  es  particularmente  adecuado para aplicaciones Web. 3) Separa clara y consistentemente las quot;preocupacionesquot;: 1) Modelo (Model) ­ Interacción con la base de datos. 2) Vista (View) ­ Presentación de la información al usuario. 3) Controlador (Controller) ­ Flujo de información y procesos. Si su aplicación no está diseñada siguiendo MVC, inevitablemente tendrá problemas  de escalabilidad, de mantenimiento y de extensión. ¡Desarrollo rápido de aplicaciones!
  • 21. Patrones de diseño y Orientación a Objetos en PHP5 MVC (Model view controller) :: Continuación. • Permite múltiples representaciones (vistas) de la misma información (modelo). • De  forma  muy  fácil  permite  agregar,  remover  o  cambiar  interfaces  de  usuarios  (vistas). • Permite  responder  a  lo  ingresado  por  el  usuario  (controladora)  para  ser  fácilmente cambiando. • Permite que múltiples desarrollos simultáneamente actualiza la interfaz, la lógica  de negocios o introducir un aplicación nueva sin afectar a otros código fuentes. • Los cambios pueden suceder dinámicamente en la ejecución de la aplicación. • Promete reducir código (ej.  “una vista puede ser usada con diferentes modelos”). • Ayuda a enfocar a los desarrolladores en un solo simple aspecto de la aplicación  al mismo tiempo. ¡Desarrollo rápido de aplicaciones!
  • 23. Patrones de diseño y Orientación a Objetos en PHP5 MVC con PHP5 :: Continuación. 1) Solicitud: El usuario ejecuta un Navegador, pide un URL solicitando a la Aplicación. 2) Despacha: La Aplicación delega a la capa Controladora la petición del usuario desde  el Navegador. 3) Almacena: Consulta en la capa Modelo por medio a la capa de Datos del manejador  de base de datos existente. 4) Devuelve: La capa de Datos devuelve los resultados en “data pura” a la capa  Controladora. 5) Genera: La capa Controladora genera la capa de Vista en base a los tipos de datos  generados por la capa de Datos. 6) Responde: La Vista generada se envía como respuesta a la solicitud al  Navegador. ¡Desarrollo rápido de aplicaciones!
  • 25. Patrones de diseño y Orientación a Objetos en PHP5 Clasificación de los patrones de acuerdo a la capa MVC. Capa de Datos (Data Layer) ORM – ActiveRecord. • Data Layer. • Delegator. • Modelo (Lógica) Abstract Factory y Registry. • Value Object. • Business Delegate. • Aggregate Entity. • Service Locator. • Strategy. • ¡Desarrollo rápido de aplicaciones!
  • 26. Patrones de diseño y Orientación a Objetos en PHP5 Clasificación de los patrones de acuerdo a la capa MVC. Controladora Inherit Application Controller. • Front Controller. • Delegate Controller. • Service Controller. • Vista Decoration Filter. • Helper View. • Composite View. • Template View. • Dispatcher View. • ¡Desarrollo rápido de aplicaciones!
  • 27. Patrones de diseño y Orientación a Objetos en PHP5 Patterns Design: the Real Life! Memento + Singleton ­> Gestión de deshacer,rehacer,historia, transacciones. Facade ­> Gestión de documentos de varios tipos en una misma interfaz. Facade + Adapter ­> Una única interfaz de acceso para múltiples bases de datos. Singleton  +  Registry  ­>  Sistemas  de  Diccionario,  i18n  (Internacionalización),  Registros de Sistema y configuración. Abstract  +  Composite  +  Helper  View  ­>  Construcción  de  vistas  complejas  a  partir de archivos sencillos. Observer + State ­> Sistema de gestión online de usuarios. Decorator + Composite ­> Sistemas de reportes. ¡Desarrollo rápido de aplicaciones!
  • 28. Patrones de diseño y Orientación a Objetos en PHP5 Patterns Design: the Real Life! Abstract Factory + Singleton ­> Fabrica abstracta de controles complejos. Flyweight ­> Gestión de vistas y uso de class (CSS) y IDREF (XML). Iterator + Data Layer ­> Explorar datos dentro de los objetos sin iterar sobre el  objeto en si (ej. Explorar sobre los datos de una DB usando FOREACH). Singleton + Decorator + Hierarchical Visitor ­> Gestión de usuarios y Roles. Composite  +  Facade  +  Interpreter  ­>  Gestores  de  idiomas  especializados,  parsers de funciones. Session Facade + Delegator ­> Loggers y gestores de sesiones de usuario. ¡Desarrollo rápido de aplicaciones!
  • 29. Patrones de diseño y Orientación a Objetos en PHP5 Un ejemplo Desglosado (Memento): Necesidad: Retornar un estado previo  ● de una operación  (operaciones “undo” o  “Rollback”). Retonar a estados  ● “específicos” del objeto  (History). Crear estados de “guardado  ● temporal” o “Check points”. ¡Desarrollo rápido de aplicaciones!
  • 30. Patrones de diseño y Orientación a Objetos en PHP5 Un ejemplo Desglosado (Memento): Sumario: (Qué debemos identificar): Identificar  la  clase  que  posee  la  “habilidad”  de  tomar  un  “snapshot”  de  si  ● misma. (clase con el rol “Originator”). Diseñar  una  clase  que  no  hace  nada  más  que  que  aceptar  y  entregar  los  ● distintos “snapshots” de objetos (clase con el rol “memento”). Diseñar  una  clase  “gestora”  a  la  cual  el  “originator”  puede  preguntar  para  ● que  retorne  un  “estado”;  puede  causar  que  el “originator”  vuelva a  estados  previos (clase con el rol “caretaker”). La clase cliente (Originator) sabe “cuando” debe salvarse su snapshot. ● La clase cuidadora (CareTaker) sabe “como” debe guardarse el snapshot. ● La clase contenedora (memento) sabe “donde” debe guardarse el snapshot. ● ¡Desarrollo rápido de aplicaciones!
  • 32. Patrones de diseño y Orientación a Objetos en PHP5 Un ejemplo Desglosado (Memento): Estructura: (Continuación): Diagrama de Secuencia: El  objeto  (originator)  pide  un  “checkpoint”  o  revisión  inicial  a  su  ● custodio (caretaker). El  custodio  (caretaker)  toma  el  objeto  actual  y  guarda  una  copia  en  ● una clase estática memento (Set). Si el cliente desea un “rollback” o deshacer una acción, simplemente  ● le  solicita  al  custodio  retornar  a  un  estado  previo  y  este  “extrae”  del  memento  el  estado  solicitado;  borra  de  memoria  (haciendo  el  checkpoint  respecto  para  posibles  “redo”)  el  Originator  actual  y  lo  reemplaza con el extraído desde el memento. ¡Desarrollo rápido de aplicaciones!
  • 33. Patrones de diseño y Orientación a Objetos en PHP5 Un ejemplo Desglosado (Memento): Implementación: Cada objeto puede llamar “estáticamente” a un “memento object” (Checkpoint State)  ● usando  una  clase  “pasarela”  llamada  Caretaker,  que  toma  las  funciones  de  monitorización del objeto base (Originator); inicialmente el objeto crea una copia de  si mismo dentro del memento (primer estado). Memento  Object  puede  simplemente  recibir  (en  un  arreglo  estático)  nuevas  copias  ● (snapshots)  del  objeto  base  (Originator)  e  indizarlas  para  su  obtención  rápida  (unlimited undo y lista de historia). Memento debe ser “opaco”; es decir, solamente debe saber que guardó un estado de  ● un objeto, sin averiguar que tipo de objeto guardó (Claro que guardando el índice de  “a quien” guardó); adicionalmente, el cliente (Originator) desconoce la naturaleza del  memento (se entiende con él a través del “caretaker”). Para más implementaciones les recomiendo que visiten www.phppatterns.com ¡Desarrollo rápido de aplicaciones!
  • 34. Patrones de diseño y Orientación a Objetos en PHP5 De lo horrible a practico :: El Camino MVC en 10 pasos 1. Desarrollas  proceduralmente  según  tu  manual  de  10  días  de  PHP3,  mezclas  HTML,  código de conexión a la base de datos, loops sobre resultsets, lógica condicional, estilo  (CSS) en una misma página. 2. Te das cuenta que si abstraes proceduralmente la lógica de conexión a datos (conectar,  consultar, insertar, borrar) podrás cambiar de DB sin traumas (eso dices tú). 3. ¿Si abstraes la lógica también, no será mejor?, ¡nacen los includes infinitos!. 4. ¿Y si centralizo esta clase en un objeto?, ¡puedo tener varias instancias!. 5. Creo que la clase hace mucho, ¿por que no la separamos y reducimos el acoplamiento  de los objetos?. 6. Dos objetos diferentes tienen propiedades similares, ¿Por qué no una clase abstracta?. 7. ¿Puedo  gestionar  todo  desde  una  clase  única  de  registro?,  configuraciones  únicas  y  Controladora Frontal. ¡Desarrollo rápido de aplicaciones!
  • 35. Patrones de diseño y Orientación a Objetos en PHP5 De lo horrible a practico :: El Camino MVC en 10 pasos 8. Te  das  cuenta  que  si  separas  el  código  HTML  de  las  clases  de  la  aplicación,  puedes  tener otros tipos de vistas (PDF, XML, WSDL, GTK, entre otros). 9. Tu  gran  aplicación  consiste  en  miles  de  clases,  unidas  entre  sí  (alta  cohesión)  en  distintas  capas  (n­tier),  con  pocas  relaciones  entre  ellas  (bajo  acoplamiento),  que  interactúan  unas  con  otras  sin  conocerse  (alta  composición),  muy  genéricas  (baja  implementación)  y  con  estándares  seguros  sobre  ordenamiento,  nombres  de  funciones (interfaces) y seguimiento de patrones. 10. ¡Felicidades!, haz llegado a MVC! ... ¿y ahora ... que? ¡Desarrollo rápido de aplicaciones!
  • 36. Patrones de diseño y Orientación a Objetos en PHP5 De lo horrible a practico :: Frameworks Un  Framework,  “Marco  de  Trabajo”  o  WAF  (Web  Application  Framework),  es  una  serie de librerías (toolkits) que se han unido bajo un único esquema de colaboración  para  que  de  manera  rápida  (RAD:  Rapid  Application  Development)  logremos  desarrollar nuestras aplicaciones. Entre las ventajas se cuenta: No  hay  que  definir  “marco  de  desarrollo”,  solo  “rellenar”  los  huecos  que  los  • frameworks nos indican. Trabajamos sobre un Estándar que miles de personas ya conocen. • Facilidad para encontrar herramientas, librerías o documentación. • Relación Coste de aprendizaje vs. Aplicabilidad mínima. • ¡Desarrollo rápido de aplicaciones!
  • 37. Patrones de diseño y Orientación a Objetos en PHP5 De lo horrible a practico :: Frameworks Algunos Framework MVC: Solar. • CakePHP. • CodeIgniter. • Symfony. • PHP on Trax. • Zend Framework. • Agavi, entre otros... • ¡Desarrollo rápido de aplicaciones!
  • 39. Patrones de diseño y Orientación a Objetos en PHP5 Conclusiones El desarrollo de web aplicaciones mezcla es un conjunto de tecnologías,  estándares  y normativas de accesibilidad, reusabilidad y operatividad de la Web que se deben  cumplir para evitar posteriores “dolores de cabeza” por desconocimiento del entorno  de despliegue de la aplicación, es decir la Web. Los patrones de diseño, es una forma simple de resolver problemas cotidianos y que  que  son  muy  repetitivos  en  nuestro  entorno.  No  requiere  una  implantación  con  lenguaje de programación por lo que ofrece, un idioma común entre programadores  de distintos lenguajes. ¡Desarrollo rápido de aplicaciones!
  • 40. Patrones de diseño y Orientación a Objetos en PHP5 Conclusiones :: Continuación. La programación MVC aplicada a la web no es una opción, ¡es una necesidad! ¿Por que? Desarrollas para una interfaz, no para una implementación. • Todo tu equipo se dedica a su especialidad preferida. • Desarrollo sostenible y mantenible. • Es posible migrar en diferentes direcciones. • Evolución rápida de la aplicación. • ¡Terminas más rápido!. • ¡Desarrollo rápido de aplicaciones!
  • 41. Patrones de diseño y Orientación a Objetos en PHP5 Conclusiones :: Continuación. Los llamados “Framework” o , “WAF”, es una serie de librerías (toolkits) que se han  unido  bajo  un  único  esquema  de  colaboración  para  que  de  manera  rápida  (RAD:  Rapid Application Development) logremos desarrollar nuestras aplicaciones. ¡Desarrollo rápido de aplicaciones!
  • 42. Patrones de diseño y Orientación a Objetos en PHP5 Sitios en Internet :: Continuación Definiciones básicas Desarrollo de software ­ Wikipedia (http://es.wikipedia.org/wiki/Desarrollo_de_software) • * Diseño web ­ Wikipedia (http://es.wikipedia.org/wiki/Diseno_web) • Desarrollo web ­ Wikipedia (http://es.wikipedia.org/wiki/Desarrollo_web) • Aplicación web ­ Wikipedia (http://es.wikipedia.org/wiki/Aplicacion_web) • Patrones de diseño con PHP5 (http://www.phppatterns.com/) • Charla “Desarrollo de Aplicaciones Web con Perl ­ Simplicidad, Productividad y  • Elegancia”, Copyright (c) 2004­2006, Ernesto Hernández­Novich, VELUG, Caracas Perl  Mongers. <emhn@usb.ve> Charla “Desarrollo web en Python usando el framework Django” ­ Blog de MilMazz •          (http://www.milmazz.com/) ¡Desarrollo rápido de aplicaciones!
  • 43. Patrones de diseño y Orientación a Objetos en PHP5 Sitios en Internet :: Continuación Patrones de Diseño * Patrón de diseño ­ Wikipedia (http://es.wikipedia.org/wiki/Patron_de_diseno) • Design pattern (computer science) ­ Wikipedia  •          (http://en.wikipedia.org/wiki/Design_pattern_(computer_science)) MVC ­ Wikipedia (http://es.wikipedia.org/wiki/MVC) • Model View Controller ­ Wikipedia (http://en.wikipedia.org/wiki/Model­view­controller) • Patrones de Diseño (http://home.earthlink.net/~huston2/dp/patterns.html) • ¡Desarrollo rápido de aplicaciones!
  • 44. Patrones de diseño y Orientación a Objetos en PHP5 ¡Gracias por su atención! ¡Visita nuestros Blog! http://lcaballero.8k.com/ http://www.jesuslara.com.ve/blog/ ¡Visita y descarga este trabajo! https://finde.gob.ve/projects/lcaballero­doc/ ¡Escribenos! leonardocaballero@gmail.com jesuslara@gmail.com ¡Desarrollo rápido de aplicaciones!