Introducción 
a los frameworks PHP NOTAS

Presentación del Taller


  • Mencionar hashTag  - #tallerPHP
  • Agradecer la invitación a participar en este taller a:

  • Juanlu García
  • Yamir Ramírez

  • A los que están siguiendo/escuchando este taller .

Introducción a los frameworks PHP

  • Hablaremos sobre el significado del termino framework.

  • Que ventajas nos ofrece el utilizar un framework.

  • Listaremos algunos frameworks en PHP pero en lugar de iniciar un un flame-war ó discusión sobre por que alguno es mejor que otro ... nos enfocaremos en las bondades que Symfony2 nos brinda. 

Acerca de mí 

Mi nombre es: 
Jesús Manuel Olivas

Me desempeño como Web Developer actualmente aprendiendo y  trabajando con  Drupal & Symfony2.

Me pueden encontrar y seguir en twitter como @jmolivas y leer lo que ocasionalmente publico en mi blog jmolivas.com pueden seguir también el podcast de Drupal el cual realizo con otros Drupaleros Mexicanos llamdo Drupodcast, estamos en twitter como @drupodcast y drupodcast.com


Iniciemos con el primero de los temas para este taller:






QUÉ ES UN FRAMEWORK?

Una definición formal para un framework o marco de trabajo  podría algo como:


Una estructura conceptual y/o un conjunto de buenas prácticas o reglas este ofrece por defecto cierta funcionalidad por medio de módulos los cuales realizan labores previamente establecidas.

El objetivo de los frameworks es servir como base o soporte, sobre el cual otro proyecto de software puede ser organizado y desarrollado. 

Y entonces ... 

¿Qué es un framework?


Pensemos en un framework  como una caja de legos esas que teníamos cuando niños con ellos podíamos construir casi cualquier cosa uniendo las diferentes piezas.

Recordemos que no todas las piezas eran iguales algunas tenían funcionalidad específica, estas pueden ser los diferentes módulos, plugins, gemas o bundles en el caso particular de Symfony2. 

¿Por qué utilizar un framework? / DESPUES

  • Al utilizar un framework trabajamos con una base de código soportada por una comunidad, recordemos una sola persona no es mejor que un ejercito de desarrolladores.
  • Las aplicaciones desarrolladas utilizando un framework cumplen con los estándares y las necesidades del mercado actual podríamos mencionar HTML5, REST, código des-acoplado entre otros.
  • Un framework no impide al desarrollador escribir código de baja calidad o realizar malas implementaciones, pero se lo hace mas complicado.

Construye tus aplicaciones no tus herramientas / DESPUES


Nos permite enfocarnos en aprender una nueva manera de hacer las cosas y en las partes divertidas de un proyecto.

Es mucho mas sencillo integrar nuevos miembros a los equipos de trabajo ya que existe un proyecto el cual cuanta con documentación y canales oficiales de soporte mantenidos por miembros de la comunidad.

El síndrome NIH / ANTES


Hablemos un poco de que regularmente sucede cuando trabajamos solos.

Aislados y sin  el soporte de la comunidad.

Terminamos contagiados de algo que se llama.


Síndrome NIH (Not Invented Here/No inventado aquí). 

Inconvenientes síndrome NIH

Entre algunos podríamos mencionar:

  • Tiempo de implementación
  • Nos estancamos con la versión actual de el lenguaje.
  • Tenemos que mantener nuestro código actualizado y seguro.
  • Es un poco mas complicado integrar nuevos miembros a un equipo de desarrollo tenemos que explicar como funciona.
  • Regularmente no contamos con documentación de las clases o métodos y en el mejor de los casos cuando existe, no esta actualizada.

COmo podemos solucionar esto ?

Reemplazando el síndrome NIH (Not Invented Here) por un predisposición  inversa conocida como 

PIE (Proudly Invented Elsewhere/Orgullosamente Inventado en otro lugar) 

también en ocasiones mencionada como:

 PFE/ (Proudly Found Elsewhere/Orgullosamente Encontrado en otro lugar)

Mi primera aplicación / ANTES

Demos un vistazo a un ejemplo de código el cual pueden encontrar en la traducción que  del libro de Symfony2 la cual pueden encontrar en librosweb.es.

2.1. Un blog sencillo creado con PHP simple

http://librosweb.es/symfony_2_3/capitulo_2/un_blog_sencillo_creado_con_php_simple.html

MI PRIMERA APLICACIÓN / DESPUES

En el cual podemos encontrar:

Un archivo con llamado index.php el cual contiene instrucciones de PHP y etiquetas de maquetado HTML.

  • En la parte superior podemos ver que se realizar la conexión a la base de datos y se ejecuta una instrucción para recuperar registros de una tabla.
  • Posteriormente podemos ver como mezcla código de PHP para iterar el resultado y etiquetas de HTML.
  • Al final nuevamente código PHP para cerrar la conexión a la base de datos.



¿Cuál es el problema? 

  • No hay comprobación de errores: ¿qué sucede si falla la conexión a la base de datos?
  • Organización deficiente: si la aplicación crece, este único archivo cada vez será más difícil de mantener, hasta que finalmente sea imposible. 
  • Es difícil reutilizar el código: ya que todo está en un archivo, no hay manera de volver a utilizar alguna parte de la aplicación.


¿COMO PODEMOS RESOLVERLO?

MVC - Modelo Vista Controlador

Es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.


  • Modelo:  Esta es la representación específica de la información con la cual el sistema opera.
  • Vista:  Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario. 
  • Controlador:  Este responde a eventos, usualmente acciones del usuario e invoca peticiones al modelo y en ocasiones envía datos a la vista. 

Frameworks en PHP

Frameworks en PHP existen muchos entres los cuales podemos mencionar

  • YII Framework  
  • Zend Framework
  • Code Igniter
  • Fuse
  • Lithium
  • Laravel
  • Symfony

ALGunas NUevas características y PROYECTOS en PHP

  • PSR-0 (Autoloading) : Es el primero de los estándares de código recomendados y establecido por el PHP Framework Interoperability Group. http://www.php-fig.org/

  • Namespaces: Son una manera de encapsular elementos o clases podríamos explicarlos como los directorios que separan los archivos en el sistema operativo.

  • Composer: Composer es un gestor de dependencias para PHP.

  • YAML:  Es un formato de serialización de datos legible por humanos.

Que es Symfony ? / DESPUES

Un conjunto de clases Orientadas a Objetos compatibles con PHP 5.3 y versiones posteriores.

Un conjunto de componentes reutilizables de manera independiente y/o cohesionada que solucionan problemas comunes de desarrollo web.

Es un framework de desarrollo en PHP que puede ser utilizado bajo el patrón Modelo Vista Controlador (MVC).

¿Qué ofrece Symfony 2? / DESPUES


Configuración PHP, XML, *YAML

Plantillas PHP, *Twig

Almacenamiento SQL, NoSQL

Flujo de trabajo (rutas) *Anotaciones, Archivos

Una linea de comando muy poderosa

Recuerdan el modelo MVC

Aún cuando Symfony2 no puede ser considerado MVC.

Podríamos agregar que symfony2 
nos ofrece:

  • MODELING: Utilizando Doctrone o Propel.

  • ROUTING - Enrutamiento

  • CONTROLLER - Controladores

  • VIEW - Vista






Routing (enrutamientos)

 Una ruta es un mapeo desde un URL hasta un acción en un controlador.

Symfony carga estas rutas de tu aplicación desde archivos de configuración. El archivo usualmente es app/config/routing.yml, pero es posible configurar para que sea cualquier otro incluyendo un archivo XML o PHP esto último cuando utilizamos anotaciones en nuestros controladores.

Controller

Un controlador es una función PHP que toma información de la petición HTTP con esto construye y devuelve una respuesta HTTP (como un objeto Respuesta de Symfony2). 

La respuesta podría ser una página HTML, un documento XML, una matriz JSON serializada, una imagen, una redirección, un error 404 o cualquier otra cosa que se te ocurra. El controlador contiene cualquier lógica arbitraria la aplicación necesita para representar el contenido de una página.

VIEW



En esta parte aun cuando es posible utilizar PHP, Symfony recomienda utilizar TWIG:

Twig es un motor de plantillas para PHP. es aun sistema de template creado para ser flexible, rápido y sencillo.

PHP Frameworks Notas

By Jesus Manuel Olivas