Día 23: Otra Mirada a Symfony
Hoy es la última parada de nuestro viaje al maravilloso mundo de symfony. Durante estos veintitrés días, aprendiste symfony con ejemplos: desde los patrones de diseño utilizados por el framework, hasta las poderosas características ya incorporadas. Aún no eres un maestro symfony, pero tienes todos los conocimientos necesarios para empezar a construir tus aplicaciones symfony con confianza.
Hemos terminado el tutorial Jobeet, asi que demos otro vistazo al framework. Olvidate de Jobeet por una hora, y recuerda todas las funciones que has aprendido durante las últimas tres semanas.
¿Qué es Symfony?
El framework symfony es un conjunto de relacionados, pero independientes sub-frameworks,
que forman un completo framework MVC
(Modelo, Vista, Controlador).
Antes de la codificación inicial, nos tomamos un tiempo para leer
la historia y la filosofía de symfony.
Entonces, comprobamos del framework sus requisitos previos
y usamos el script check_configuration.php
para validar tu configuración.
Finalmente, instalamos symfony. Después de algún tiempo también desearás actualizar a la última versión del framework.
El framework también proporciona herramientas para facilitar el despliegue.
El Modelo
La parte del Modelo de symfony se puede hacer con la ayuda del ORM Doctrine. Basado en la descripción de la base de datos, esta genera las clases para los objetos, formularios, y filtros. Doctrine también genera las sentencias SQL utilizada para crear las tablas en la base de datos. La configuración de la base de datos se puede hacer con una tarea o editando un archivo de configuración. Además de su configuración, también es posible hacer la inyección inicial de datos, gracias a los archivos de datos. Puede incluso hacer que estos archivos sean dinámicos.
Los objetos Doctrine también puede ser fácilmente internacionalizados.
La Vista
De forma predeterminada, la capa de la Vista de la arquitectura MVC utiliza archivos PHP planos como plantillas.
Las plantillas puede utilizar helpers para tareas recurrentes como crear una URL o un enlace. Una plantilla puede ser decorada por un layout para abstraerse del encabezado y pie de las páginas. Para hacer vistas aún más reutilizables, puedes definir slots, partials, y componentes.
Para acelerar las cosas, puedes utilizar el sub-framework del cache para guardar en cache una página entera, solo la acción, o tan solo partials o componentes. También puedes eliminar el cache manualmente.
El Controlador
La parte del Controlador es gestionado por controladores frontales y acciones.
Las tareas se puede utilizar para crear simples módulos, módulos CRUD, o aun para generar completos y funcionales módulos admin para las clases del modelo.
Los módulos admin te permiten construir una aplicación completamente funcional sin codificación alguna.
Para abstraer la implementación técnica de un sitio web, symfony utiliza un sub-framework enrutamiento que genera URLs amigagles. Para hacer la implementación de servicios web aún más fácil, symfony soporta formatos en forma nativa. También puedes crear tus propios formatos.
Una acción puede ser reenviada a otra, o redirigida.
La Configuración
El framework symfony hace que sea fácil tener diferentes ajustes de configuración para distintos entornos. Un entorno es un conjunto de ajustes que permite diferentes comportamientos en los servidores de desarrollo o de producción. También puedes crear nuevos [entornos] #chapter_21_creating_a_new_environment).
Los archivos de configuración de symfony puede definirse en diferentes niveles y la mayoría de ellos son conscientes del entorno:
app.yml
cache.yml
databases.yml
factories.yml
generator.yml
routing.yml
schema.yml
security.yml
settings.yml
view.yml
La mayoría de los archivos de configuración usan el formato YAML.
En lugar de utilizar la estructura de directorios por defecto y organizar tus archivos de aplicaciones por capas, también puedes organizarlos por función, y agruparlos en un plugin. Hablando de la estructura de directorios por defecto, también puedes personalizarla de acuerdo a tus necesidades.
La Depuración
Desde el logging hasta la la barra de herramientas de depuración web, y las significativas excepciones, symfony proporciona un montón de herramientas útiles para ayudar a los desarrolladores a depurar problemas con mayor rapidez.
Los Principales Objetos de Symfony
Los frameworks de symfony proporciona un buen número de objetos básicos que nos abstraen de necesidades recurrentes en los proyectos web: la petición, la respuesta, el usuario, el logging, las rutas, el mailer, y el administrador del cache .
Estos objetos básicos son gestionados por el
objetos sfContext
, y
que se configuran a través de las factorias.
El objeto user gestiona la autenticación, autorización, flashes, y atributos para ser guardado en la sesión.
La Seguridad
El framework symfony tiene incorporadas protecciones contra XSS y CSRF. Estos ajustes pueden ser configurados desde la línea de comandos, o la edición de un archivo de configuración.
El framework de formularios proporciona características incorporadas de seguridad.
Los Formularios
Como la gestión de formularios es uno de las más tediosas tareas para un desarrollador web, symfony proporciona un sub-framework de formularios. El framework de formularios viene con un montón de widgets y validadores. Una de las fortalezas del sub-framework de formularios es que las plantillas son muy fácilmente personalizables.
Si usas Doctrine, el framework de formularios también facilita la generación de formularios y filtros basados en tus modelos.
Internacionalización y localización
Internacionalización y localización están soportadas por symfony, gracias al estándar ICU. La cultura del usuario determina el idioma y el país del usuario. Esto puede ser definido por el usuario mismo, o incluído en la URL.
Las Pruebas
La biblioteca lime, usa por las Pruebas Unitarias, proporciona una gran cantidad de métodos de prueba. Los objetos Doctrine también puede ser probados desde una base de datos dedicada y con específicos datos.
Las pruebas unitarias se puede ejecutar una a la vez o todas juntas.
Las PruebasFfuncionales están escritas con la clase
sfFunctionalTest
, la cual usa un simulador de navegador y permite la introspección de los objetos del núcleo de symfony a través de Testers. Los Testers existen para el objeto request, el
objeto response , el
objeto user, el
objeto formulario actual, la
capa cache y los
Objetos Doctrine.
También puedes utilizar herramientas de depuración para la respuesta y formularios.
Ya que las pruebas unitarias, pruebas funcionales se pueden ejecutar una por una o todas juntas.
También puedes ejecutar todas las pruebas juntas.
Los Plugins
El framework symfony sólo proporciona la base para tus aplicaciones web y se basa en plugins para añadir más
características. En este tutorial, hemos hablado de sfGuardPlugin
,
sfFormExtraPlugin
, y
sfTaskExtraPlugin
.
Un plugin debe ser activado después de la instalación.
Plugins are the best way to contribute back to the symfony project.
Las Tareas
El CLI de symfony proporciona una gran cantidad de tareas, y las más útiles han sido discutidas en este tutorial:
app:routes
cache:clear
configure:database
generate:project
generate:app
generate:module
help
i18n:extract
list
plugin:install
plugin:publish-assets
project:deploy
doctrine:build --all
doctrine:build --all --and-load
doctrine:build-forms
doctrine:build-model
doctrine:build-sql
doctrine:data-load
doctrine:generate-admin
doctrine:generate-module
doctrine:insert-sql
test:all
test:coverage
test:functional
test:unit
También puedes crear tus propias tareass.
Hasta pronto
Aprendiendo con la Práctica
El framework symfony, como cualquier pieza de software, tiene una curva de aprendizaje. En el proceso, el primer paso es aprender desde ejemplos prácticos con un libro como este. El segundo paso es practicar. Nada nunca reemplazará a la práctica.
Es algo que puede empezar hoy mismo. Piensa en un muy simple proyecto web que de algún valor: una lista de tareas, un simple blog, un conversor de tiempo o moneda, lo que sea... Elije uno y empieza implementandolo con lo que ya sabes hoy. Usa la tarea de ayuda para aprender las diferentes opciones, busca código generado por symfony, usa un editor que tenga auto-completion de PHP como Eclipse, y lee la guía de referencia para buscar toda la configuración del framework.
Disfruta de todo el material que tienes a tu disposición para aprender mas de symfony.
La Comunidad
Antes de dejarte, me gustaría hablar de una última cosa acerca de symfony. El framework tiene un montón de grandes características y una gran cantidad de documentación libre. Sin embargo, uno de los más valiosos recursos que el Open-Source puede tener es su comunidad. Y symfony tiene una de las más sorprendentes y activa comunidades. En caso de empezar a usar symfony para tus proyectos, considera la posibilidad de unirte a la comunidad symfony:
- Suscríbete al user mailing-list
- Suscríbete al official blog feed
- Suscríbete al symfony planet feed
- Ven y chatea en el #symfony IRC canal de freenode
Feedback
tip
Este capítulo ha sido traducido por Roberto Germán Puentes Díaz. Si encuentras algún error que deseas corregir o realizar algún comentario, no dudes en enviarlo por correo a puentesdiaz [arroba] gmail.com
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.