Google Analytics

lunes, 21 de febrero de 2011

Curso nivelatorio para tocar con la sinfónica

Buenas. Siguiendo con la historia hoy vengo a intentar volcar mis mañas de solista al querido framework y fracasar con todo el éxito posible.

Quizá se complica un poco adaptarse a la estructura y forma de funcionamiento, configuración, etc. pero vale la pena. Realmente.

Y aquí vamos. Imagino que leyeron los primeros capítulos de Practical Symfony.

Es muy recomendable colocar el framework en lib/vendor/, pero porque ?, podes ponerlo en donde quieras, pero es bueno seguir mas o menos los lineamientos del framework. Además symfony creara directorios dentro de la carpeta lib. Es más, deberías poner todas las librerias externas dentro de este directorio.

Si trabajas con SVN, es muy recomendable agregar el svn:external. Y también es recomendable el primer commit (cosa que yo no hice).

Hasta ahora solo tenemos un solo directorio en el proyecto, el cual es una librería externa ;). Ahora empieza la magia.
php lib/vendor/symfony/data/bin/symfony generate:project [NombreDelProyecto]

Veremos que genera un árbol de directorios que necesita symfony para trabajar. Esto es lo bueno con respecto a otros frameworks, empezás con solo una dependencia, vas viendo como crece el proyecto, y no tenes que andar adivinando que va en cada carpeta.

NOTA: No olvides  check_configuration,php, muy útil para saber si symfony va a correr en tu server.

Ahora podes usar ./symfony para llamadas de consola. Es el momento de generar apps, tasks, etc. y ver como genera su estructura.

Estructura
La estructura principal de un proyecto esta dada por apps, lib, plugins:
  • Plugins: extensiones que trabajan en forma independiente. Muchas veces es útil buscar un plugin que cubra una funcionalidad a crear, testear, etc.
  • Lib: Aquí están las clases pertenecientes al Modelo, Formularios, Filtros, Tareas.  Además aquí deberías agregar las clases que necesites crear.
  • Apps: (ejemplo frontend) dentro tiene módulos y librerías para uso propio. Además tiene acceso a lib y plugins del proyecto. 
También esta el directorio config en la raiz del proyecto, como así también, en apps y plugins. De esta forma permite configurar cada sección de nuestro proyecto independientemente del otro, y si así lo requiere acceder desde una app a algún dato de la configuración global.

Entornos (ENV)
Symfony permite trabajar con distintos entornos. Al principio parece una boludez, pero lo vas a necesitar. Podes generar entornos a tu antojo. no es necesario que los hagas todos de una vez. Básicamente, definís una DB para cada entorno y como se comportará cada entorno.

Una vez definidos, podrás hacer pruebas en algunos entornos. por ejemplo usé el entorno test para probar la migración de la base de datos. Pero cuidado, el modelo es común a todos los entornos, por lo que si lo regeneras es probable que algún otro entorno falle.

Configuración (Yaml)
En esto se puede ver la versatilidad de symfony, puedes configurarlo mediante PHP, XML y YaML. Quizá la primera impresión asusta pero lo mejor de lo mejor es YaML.

Configurar en PHP, es como seguir programando. Código donde no debería. Tedioso. A alguien que no sabe programar no le va ser fácil.

El XML es mas universal, sin embargo necesitas al menos conocer la sintaxis.

La ventaja de Yaml, es la simpleza, no necesitas recordar cerrar tags, y mucho menos hace falta saber cual es el api de configuración. Es simple, la llave seguida de dos puntos y el valor.

type: integer

En caso de poseer proliedades en una nueva linea con tabulación de espacios.
id:
   type: integer


 Es todo por hoy.

sábado, 12 de febrero de 2011

De solista a buscar con quien tocar...

Influenciado por algunos amigos entré en el mundo de los frameworks para PHP.

El recomendado fue CakePHP, la verdad es difícil, programes como programes, adaptarte al modelo de "otro" es complicado. muy complicado. Quizá se llevo todo el odio por ser el primer contacto con un framework, pero bueh... En fin... CakePHP me sirvió para poder asimilar el concepto de framework. desmenuzar los esquemas, controladores, vistas, módulos, rutas, helpers, widgets, plugins y toda las verduras y frutas que imagines.

Sin embargo CakePHP no convenció del todo. Quizá porque soy un rompebolas. Es probable. El mejor pero que encontré es que es mucho array, y no hay cosa que me desagrade mas es escribir accesos a los arrays. Agreguemos también que tiene un nivel medio de uso de objetos/clases, cosa que de solista, armaba todo en clases.

Bien, a empezar a buscar un framework que me convenza. Que cagada. Tarea complicada. Muy.

Entre los tantos que vi, visite me tope con Symfony. Un framework compuesto de muchos proyectos, lo que realmente me gusto. Con cosas raras como Yaml o ejecución de cosas por consola. Le di un vistazo a los manuales y me parecieron muy prácticos y didácticos. Además se destaca por requerir PHP 5, para explotar al máximo clases y objetos.

Tarea para la casa: Leer los primeros capítulos (por lo menos hasta el 4to)  de Practical Symfony, guía de cabecera para hacer una App de verdad.

Después les cuento como terminas amando al yaml, sacarle provecho a la consola y mis más experiencias con la sinfónica.