El documento describe Symfony 2 y su ecosistema. Symfony 2 es un framework PHP que incluye 22 componentes y 8 bundles. Estos componentes y bundles, junto con 5 librerías externas como Twig, Doctrine, Monolog y Assetic, forman el ecosistema de Symfony 2.
tics en la vida cotidiana prepa en linea modulo 1.pptx
Symfony2 y su ecosistema
1. Symfony 2 y su ecosistema
Francisco Javier Aceituno Lapido
fco.javier.aceituno@gmail.com
2. Francisco Javier Aceituno Lapido
• Ingeniero en Informática (UPM) 2010
• Colaborador en symfony-madrid
• Arquitecto de Software en ideup!
• Amante del mundo PHP y Symfony desde 2008
Symfony 2 y su ecosistema 2
3. ¿ Qué es Symfony 2?
8 Bundles
Symfony 2 y su ecosistema 3
4. ¿ Qué es Symfony 2?
ClassLoader HttpFoundation Routing EventDispatcher
DependencyInjection Console Config
22 componentes
Symfony 2 y su ecosistema 4
5. ¿ Qué es Symfony 2?
ClassLoader HttpFoundation Routing EventDispatcher
DependencyInjection Console Config
22 componentes
Twig Doctrine Monolog Assetic SwiftMailer
5 Librerías externas
Symfony 2 y su ecosistema 5
8. ClassLoader
https://github.com/symfony/ClassLoader
Carga automáticamente las clases de tu proyecto si
– Definición de las clases siguen el estadar PSR-0 (PHP 5.3)
Codemotion/Model/Task.php CodemotionModelTask
– Definición de las clases según el convenio PEAR
Codemotion/Model/Task.php Codemotion_Model_Task
Symfony 2 y su ecosistema 8
12. HttpFoundation
https://github.com/symfony/HttpFoundation
Define una capa orientada a objetos de la especificación de HTTP
Request
all()
query $_GET keys()
request $_POST
cookies $_GET
$_COOKIE
replace()
add()
attributes get()
files $_FILES set()
server $_SERVER has()
headers remove()
Symfony 2 y su ecosistema 12
13. HttpFoundation
https://github.com/symfony/HttpFoundation
Define una capa orientada a objetos de la especificación de HTTP
Request Response
all()
query $_GET keys()
request $_POST
cookies $_GET
$_COOKIE
replace()
add()
content
status
attributes get() headers
files $_FILES set()
server $_SERVER has()
headers remove()
Symfony 2 y su ecosistema 13
14. HttpFoundation
https://github.com/symfony/HttpFoundation
Define una capa orientada a objetos de la especificación de HTTP
send()
Request Response prepare()
all()
query $_GET keys()
request $_POST
cookies $_GET
$_COOKIE
replace()
add()
content $_GET
status
attributes get() headers
files $_FILES set()
server $_SERVER has()
headers remove()
Symfony 2 y su ecosistema 14
15. HttpFoundation
https://github.com/symfony/HttpFoundation
Define una capa orientada a objetos de la especificación de HTTP
send()
Request Response prepare()
all()
query $_GET keys() cache
request $_POST
cookies $_GET
$_COOKIE
replace()
add()
content $_GET setPublic()
setPrivate()
status
attributes get() headers expire)
files $_FILES set() setExpires()
server $_SERVER has() setMaxAge()
headers remove() setLastModified()
…
Symfony 2 y su ecosistema 15
20. Routing
https://github.com/symfony/Routing
Mapea una petición HTTP (Request) a un conjunto de variables
configuración
app.php/task/list task/list controller: TaskController, action: listAction
Router
app.php/task/1/show
Symfony 2 y su ecosistema 20
21. Routing
https://github.com/symfony/Routing
Mapea una petición HTTP (Request) a un conjunto de variables
configuración
app.php/task/list task/list controller: TaskController, action: listAction
Router
app.php/task/1/show
task/{id}/show
Symfony 2 y su ecosistema 21
22. Routing
https://github.com/symfony/Routing
Mapea una petición HTTP (Request) a un conjunto de variables
configuración
app.php/task/list task/list controller: TaskController, action: listAction
Router controller: TaskController, action:
app.php/task/1/show showAction, id: 1
task/{id}/show
Symfony 2 y su ecosistema 22
23. Doctrine 2
Conjunto de librerías PHP que nos proporciona servicios de persistencia
Symfony 2 y su ecosistema 23
25. Doctrine 2
https://github.com/doctrine/doctrine2
- Manipulación de la estructura de bbdd.
Doctrine DBAL - Abstracción del tipo de bbdd (IMBDB2, PDOIbm,
PDOMySQL, PDOOracle, PDOSqlite, …).
Doctrine Common - Extensiones al core de PHP (Colecciones, Anotaciones, Cache, ...)
Symfony 2 y su ecosistema 25
26. Doctrine 2
https://github.com/doctrine/doctrine2
- Ofrece persistencia transparente a los objetos de PHP.
Doctrine ORM - Doctrine Query Language (DQL) nos abstrae el mapeo entre las
columnas y tablas de la bbdd y los objetos.
- Manipulación de la estructura de bbdd.
Doctrine DBAL - Abstracción del tipo de bbdd (IMBDB2, PDOIbm,
PDOMySQL, PDOOracle, PDOSqlite, …).
Doctrine Common - Extensiones al core de PHP (Colecciones, Anotaciones, Cache, ...)
Symfony 2 y su ecosistema 26
27. Doctrine 2 ORM
Active Record vs DataMapper
Tarea
nombre
descripción
elementos
save()
delete()
update()
Symfony 2 y su ecosistema 27
28. Doctrine 2 ORM
Active Record vs DataMapper
Tarea
$tarea = new Tarea();
nombre $tarea->setNombre(..)
descripción
elementos $tarea->save()
$tarea->delete()
save()
delete()
update()
Symfony 2 y su ecosistema 28
29. Doctrine 2 ORM
Active Record vs DataMapper
Tarea Tarea
$tarea = new Tarea();
nombre $tarea->setNombre(..)
descripción
nombre
elementos $tarea->save() descripción
$tarea->delete() elementos
save()
delete()
update()
Symfony 2 y su ecosistema 29
30. Doctrine 2 ORM
Active Record vs DataMapper
Tarea Tarea
$tarea = new Tarea(); $tarea = new Tarea();
nombre $tarea->setNombre(..) $tarea->setNombre(...)
descripción
nombre
elementos $tarea->save() descripción $em->persist($tarea)
$tarea->delete() elementos $em->remove($tarea)
save()
$em->flush()
delete()
update()
Symfony 2 y su ecosistema 30
31. Doctrine 2 ORM
Entity Manager
Es el punto de acceso a las funcionalidad del ORM y el el encargado
de persistir las entidades.
persist ($entity)
remove ($entity)
flush()
Symfony 2 y su ecosistema 31
32. Doctrine 2 ORM
Entity Respository
Colección de entidades de un mismo tipo. Es el encargado de
separar la lógica de Doctrine de tu modelo.
findAll ()
findBy (array)
findOneBy(array)
…
Symfony 2 y su ecosistema 32
33. Doctrine 2 ORM
DQL
Lenguaje de búsquedas para tu modelo de objetos.
SELECT t FROM CodemotionModelTask t WHERE t.horas > 2
Symfony 2 y su ecosistema 33
34. Doctrine 2 ORM
DQL
Lenguaje de búsquedas para tu modelo de objetos.
SELECT t FROM CodemotionModelTask t WHERE t.horas > 2
Query Builder
$qb->add('select', ‘t') ->
add('from', CodemotionModelTask t') ->
add('where', ‘t.horas > 2');
Symfony 2 y su ecosistema 34
35. Doctrine 2 ORM
Comandos
Doctrine ORM viene con un conjunto de herramientas que nos
simplifica enormemente el trabajo con la bbdd.
orm:validate-schema
orm:schema-tool:update | create | drop
orm:generate-entities
…
Symfony 2 y su ecosistema 35
36. Doctrine 2 ORM
Documentación
http://www.doctrine-project.org/
Symfony 2 y su ecosistema 36
37. Twig
https://github.com/fabpot/Twig
Twig es un sistema de plantillas para PHP muy conciso, flexible y
con una sintaxis orientada a plantillas
http://twig.sensiolabs.org/
Symfony 2 y su ecosistema 37
38. Twig
CONCISO
<?php echo $tarea->getNombre() ?>
<?php echo $hoy->format(‘Y-m-d’); ?>
Symfony 2 y su ecosistema 38
40. Twig
SINTAXIS ORIENTADA A PLANTILLAS
<?php if ($tareas): ?>
<?php foreach ($tareas as $tarea): ?>
* <?php echo $tarea->getNombre(); ?>
<?php endforeach; ?>
<?php else: ?>
No hay tareas disponibles
<?php endif; ?>
Symfony 2 y su ecosistema 40
41. Twig
SINTAXIS ORIENTADA A PLANTILLAS
<?php if ($tareas): ?>
<?php foreach ($tareas as $tarea): ?> {% for tarea in tareas %}
* <?php echo $tarea->getNombre(); ?> * {{ tarea.nombre }}
<?php endforeach; ?> {% else %}
<?php else: ?> No hay tareas disponibles
No hay tareas disponibles {% endfor %}
<?php endif; ?>
Symfony 2 y su ecosistema 41
42. Twig
Flexible
Permite a los desarrolladores definirse cualquier tag, filtro, función, …
http://twig.sensiolabs.org/doc/api.html
http://twig.sensiolabs.org/doc/extensions.html
Symfony 2 y su ecosistema 42
45. Dependency Injection
Pero, …¿ Qué es una inyección de dependencias?
$gestorTareas = new GestorTareas($em);
Symfony 2 y su ecosistema 45
46. Dependency Injection
Pero, …¿ Qué es una inyección de dependencias?
$gestorTareas = new GestorTareas($em);
$gestorTareas = new GestorTareas();
$gestorTareas->setEntityManager($em);
Symfony 2 y su ecosistema 46
48. Dependency Injection Container (DIC)
Reglas de
creación
de objetos
get(‘gestor_tareas’)
DIC
Symfony 2 y su ecosistema 48
49. Dependency Injection Container (DIC)
Reglas de
creación
de objetos
“gestor_tareas” depende de
get(‘gestor_tareas’) “entity_manager”
DIC
Symfony 2 y su ecosistema 49
50. Dependency Injection Container (DIC)
Reglas de
creación
de objetos
“gestor_tareas” depende de
get(‘gestor_tareas’) “entity_manager”
DIC
$em = $container->get(‘entity_manager’);
$gestorTareas = new GestorTareas($em)
return $gestorTareas;
Symfony 2 y su ecosistema 50
51. Dependency Injection Container (DIC)
Reglas de
creación
de objetos
“gestor_tareas” depende de
get(‘gestor_tareas’) “entity_manager” $gestorTareas
DIC
$em = $container->get(‘entity_manager’);
$gestorTareas = new GestorTareas($em)
return $gestorTareas;
Symfony 2 y su ecosistema 51