Este documento presenta una introducción al framework PHP Symfony2. Explica que Symfony2 proporciona varias características clave como routing, plantillas, formularios, acceso a base de datos, seguridad y más. También describe los conceptos fundamentales de Symfony2 como bundles, controllers, vistas y la integración con Twig y Doctrine. El documento concluye instando a los lectores a continuar aprendiendo más sobre el desarrollo ágil con Symfony2.
2. ¿QUIÉN SOY?
• Ariel Ferrandini (11-11-1985)
• Técnico superior en Administración de Sistemas Informáticos (FP)
• Estudiante de adaptación a Grado de Ingeniería Informática
• Trabajando en Neosistec desde 2006 ~ Head del equipo WEB
• Me gusta programar, la pizza, la tecnología y publicar código! (Github)
• Trabajando con Symfony desde 0.9.4beta
3. Protocolo http ~ https
200-Ok ~ 404-Not found ~ 500-Internal server error
11. Symfony2 es un framework
• Routing • Internacionalización
• Sistema de plantillas • Envío de correos
• Gestión de formularios • Gestión de “assets”
• Gestión de base de datos • Sistema de logs
• Sistema de caché • Test unitarios
• Sistema de validación • Contenedor de servicios
• Gestión de seguridad • Ayuda para depuración
2,9 MB
12. Symfony2 es rápido
• 20% más rápido que Solar 1.0.0beta3
¡Es muy rápido!
• 60% más rápido que Lithium 0.6
• 75% más rápido que Yii 1.1.1
•2 veces más rápido que symfony 1.4.2
• 3.5 veces más rápido que Zend 1.10
• 5.5 veces más rápido que CakePHP 1.2.6
• 69 veces más rápido que Flow3 1.0.0alpha7
• http://blog.newitfarmer.com/php/framework-php/1904/symfony2-performs-betterbetter-performance/
13. Symfony2 es seguro
• Enenero de 2011, SektionEins realizó una ¡Es muy seguro!
auditoría de seguridad ~ Versión beta
• Solo 8 bugs de seguridad mínima
• Ya están solucionados
• http://symfony.com/blog/symfony2-security-audit
14. Symfony2 según Fabien Potencier
• “Symfony2 is a reusable set of standalone,
decoupled, and cohesive PHP components
that solve common web development
problems”. ~ Fabien Potencier
http://fabien.potencier.org/article/49/what-is-symfony2
15. Symfony2 está construido con bundles
DependencyInjection
el
ne
Con
rn
ctri
Ke
Se
Yam g
tp
cu
fig
Do
in
Ht
l t
r ity
ou sole
Fin R on
Va
de C
r
ade
lida
Htt r
pFo Fo ing
tio
sLo
u nda rm plat her
n
tion em is patc
s
T entD
Cla
Ev
16. Symfony2 está construido con bundles
tpccyInjection
Htt in g r
Fo platchg
r e
Dependen tr der
l
F nd at n e
ne
SeVali
pFom i
Yaiiumt le
Ke in
Cu dnti
D srm
e peo
Do oa
coa o
Ev T nd u ion
ent nslrat
o
HtssL
rit fig
C o R
y
Cla
n
18. Definición de bundle
•A bundle, is a directory containing a set
of files (PHP files, stylesheets, JavaScript,
images, etc...), that implement a single
feature (a blog, a forum, etc...). In
Symfony2 (almost) everything lives
inside a bundle.
19. ¿Qué contiene un bundle?
• Controller ~ Command
• Entity ~ Repository
• Form
• Resources
• Test
• DependencyInjection
21. Symfony2: Routing
• Localizar a partir de la URL la acción que se tiene que ejecutar (Controller)
• Poner nombres a las rutas para cambiarlas en un solo lugar
• Rutas más legibles y fáciles de memorizar
• Mejora el SEO
• Uso de anotaciones
24. Symfony2: Controller
• El Controller es la C del patrón MVC
• Contiene las acciones que se deben
ejecutar dependiendo de la ruta
• Pasar parámetros a las vistas
• Generar directamente la respuesta
25. Symfony2: Vistas ~ Twig
• Es lo que ve el usuario final
• Generalmente existe una vista para cada acción
• Separan la presentación del negocio
• Reciben los parámetros de las acciones
• Symfony2 integra el lenguaje de plantillas Twig
• Son la V del patrón MVC
http://twig.sensiolabs.org
26. Symfony2: Twig
• echo ~ {{ user.name }}
• Herencia: {% extends %}
• Filtros: {{ user.date|date(‘d/m/Y’) }}
• Funciones: {{ myHelloWorld(“Ariel”) }}
• Macros: {{ import “helper.html” as helper }}
• Muy rápido. Las plantillas se precompilan a PHP.
27. Symfony2: Twig
• Twig está lleno de utilidades. Twig tiene for .. else ..
• Twig es flexible
• Twig es extensible
• Twig es rápido
• Twig es seguro
• Twig viene por defecto en Symfony2
28. Symfony2: Modelo ~ Doctrine
• Nos permite interactuar con la base de datos
• No es necesario saber SQL
• Generador de Entities y Repositories
• Totalmente nuevo respecto a Doctrine1
http://www.doctrine-project.org
• Symfony2 integra Doctrine por defecto
• Es la M del patrón MVC
29. Symfony2: Doctrine
•3 componentes independientes
• Doctrine common
• Doctrine DBAL
• Doctrine ORM
• Integrado como un Bundle Doctrine2Bundle
30. Symfony2: Doctrine
• Doctrine genera las Entities
• Doctrine YML/XML/PHP/Anntotations
• Doctrine integra relaciones
• EntityManager punto de acceso único ORM
• Queries complejas DQL QueryBuilder
32. ¿Cómo instalar Symfony2?
• http://www.symfony.com
• Download Now ~ SF2 SE .zip/.tgz
• Descomprime en tu carpeta de Apache
• Configuración config.php
• Prueba el AcmeDemoBundle
33. Introducción a Symfony2
Agradecimientos
César Suárez ~ Buen amigo ~ @tharandur
Neosistec que me ha permitido crear PizzaNight
Javier Eguiluz ~ Creador libro Symfony2 Español ~ @javiereguiluz
Toda la comunidad DeSymfony
34. Siguientes pasos con Symfony2
Desarrollo web ágil con Symfony2
el primer libro del mundo publicado sobre Symfony2
http://www.symfony.es
http://www.symfony.com