1
1Saturday, August 31, 13
¿Que es Symfony?
2
2Saturday, August 31, 13
¿Que es Symfony?
•Conjunto de componentes
3
3Saturday, August 31, 13
¿Que es Symfony?
•Conjunto de componentes
•Full-stack Framework
4
4Saturday, August 31, 13
¿Que es Symfony?
•Conjunto de componentes
•Full-stack Framework
•Micro-framework
5
5Saturday, August 31, 13
¿Que es Symfony?
•Conjunto de componentes
•Full-stack Framework
•Micro-framework
•Una gran comunidad
6
6Saturday, August 31, 13
¿Objetivo?
7
7Saturday, August 31, 13
Objetivo
• No reinventar la rueda
8Saturday, August 31, 13
Objetivo
• No reinventar la rueda
• Separación - MVC
9Saturday, August 31, 13
Objetivo
• No reinventar la rueda
• Separación - MVC
• Calidad - TDD
10Saturday, August 31, 13
Objetivo
• No reinventar la rueda
• Separación - MVC
• Calidad - TDD
• Exportabilidad
11Saturday, August 31, 13
Objetivo
• No reinventar la rueda
• Separación - MVC
• Calidad - TDD
• Exportabilidad
• Velocidad
12Saturday, August 31, 13
Requerimientos
13
13Saturday, August 31, 13
Requerimientos
PHP >= 5.3.2
14
14Saturday, August 31, 13
PHP 5.3
Namespaces
NamespaceClass
15
15Saturday, August 31, 13
PHP 5.3
Funciones lambda & Closures
$items = array_filter(
array(1, 2, 3, 4, 5),
create_function('$item', 'return 4 > $item;')
);
16
16Saturday, August 31, 13
PHP 5.3
Funciones lambda & Closures
$items = array_filter(array(1, 2, 3, 4, 5), function ($item) {
return 4 > $item;
});
17
17Saturday, August 31, 13
Componentes
18
18Saturday, August 31, 13
Componentes
•Librerías standalone
•Implementan cierta funcionalidad
•Son la base del framework
19Saturday, August 31, 13
Componentes
BrowserKit Class loader Config Console CSS
Selector
Debug Dependency InjectionDependency Injection Dom
Crawler
Event
Dispatcher
Filesystem Finder Form HTTP FoundationHTTP Foundation
HTTP KernelHTTP Kernel Intl Locale Options
Resolver
Process Property
Access
Routing Security Serializer
Stopwatch Templating Yaml
20Saturday, August 31, 13
Componentes
BrowserKit Class loader Config Console CSS
Selector
Debug Dependency InjectionDependency Injection Dom
Crawler
Event
Dispatcher
Filesystem Finder Form HTTP FoundationHTTP Foundation
HTTP KernelHTTP Kernel Intl Locale Options
Resolver
Process Property
Access
Routing Security Serializer
Stopwatch Templating Yaml
21Saturday, August 31, 13
Full-stack Framework
22
22Saturday, August 31, 13
├── app
│ ├── Resources
│ ├── cache
│ ├── config
│ ├── logs
│ └── AppKernel.php
├── src
│ └── Acme
├── vendor
└── web
├── bundles
├── css
├── images
└── js
Estructura de archivos por
defecto.
El proyecto
23
23Saturday, August 31, 13
├── app
│ ├── Resources
│ ├── cache
│ ├── config
│ ├── logs
│ └── AppKernel.php
├── src
│ └── Acme
├── vendor
└── web
├── bundles
├── css
├── images
└── js
Contiene los archivos
inician la ejecución de la
aplicación, configuraciones,
archivos de cache y
recursos.
La aplicación
24
24Saturday, August 31, 13
├── app
│ ├── Resources
│ ├── cache
│ ├── config
│ ├── logs
│ └── AppKernel.php
├── src
│ └── Acme
├── vendor
└── web
├── bundles
├── css
├── images
└── js
Aquí se ubican los
paquetes(bundles) y
librerías comunes a todas
las aplicaciones del
proyecto
Librerías del proyecto
25
25Saturday, August 31, 13
├── app
│ ├── Resources
│ ├── cache
│ ├── config
│ ├── logs
│ └── AppKernel.php
├── src
│ └── Acme
├── vendor
└── web
├── bundles
├── css
├── images
└── js
•Librerías standalone.
•No específicas del proyecto
•Symfony!
Librerías de terceros
26
26Saturday, August 31, 13
├── app
│ ├── Resources
│ ├── cache
│ ├── config
│ ├── logs
│ └── AppKernel.php
├── src
│ └── Acme
├── vendor
└── web
├── bundles
├── css
├── images
└── js
•Único directorio público
del proyecto
•Front controllers
•Assets
•Uploads
Document root
27
27Saturday, August 31, 13
• Implementación de una funcionalidad
específica
• Paquete exclusivo para uso en proyectos
symfony.
• Permite empaquetar funcionalidades
• Integra librerías externas
Bundles
28
28Saturday, August 31, 13
├── AcmeDemoBundle.php
├── Controller
│ ├── DemoController.php
├── DependencyInjection
│ └── AcmeDemoExtension.php
├── Entity
├── Resources
│ ├── config
│ ├── public
│ └── views
│ └── Demo
│ └── index.html.twig
└── Tests
Estructura de archivos
por defecto.
Bundles
29
29Saturday, August 31, 13
├── AcmeDemoBundle.php
├── Controller
│ ├── DemoController.php
├── DependencyInjection
│ └── AcmeDemoExtension.php
├── Entity
├── Resources
│ ├── config
│ ├── public
│ └── views
│ └── Demo
│ └── index.html.twig
└── Tests
Cotroladores. Es donde
se encuentra la lógica de
nuestro paquete.
Bundles
30
30Saturday, August 31, 13
├── AcmeDemoBundle.php
├── Controller
│ ├── DemoController.php
├── DependencyInjection
│ └── AcmeDemoExtension.php
├── Entity
├── Resources
│ ├── config
│ ├── public
│ └── views
│ └── Demo
│ └── index.html.twig
└── Tests
Es donde se procesa la
configuración de nuestro
paquete.
Bundles
31
31Saturday, August 31, 13
├── AcmeDemoBundle.php
├── Controller
│ ├── DemoController.php
├── DependencyInjection
│ └── AcmeDemoExtension.php
├── Entity
├── Resources
│ ├── config
│ ├── public
│ └── views
│ └── Demo
│ └── index.html.twig
└── Tests
•El modelo
•Interacción con la base
de datos.
Bundles
32
32Saturday, August 31, 13
├── AcmeDemoBundle.php
├── Controller
│ ├── DemoController.php
├── DependencyInjection
│ └── AcmeDemoExtension.php
├── Entity
├── Resources
│ ├── config
│ ├── public
│ └── views
│ └── Demo
│ └── index.html.twig
└── Tests
Recursos del paquete
tales como la
configuración de
servicios, archivos
públicos y templates.
Bundles
33
33Saturday, August 31, 13
├── AcmeDemoBundle.php
├── Controller
│ ├── DemoController.php
├── DependencyInjection
│ └── AcmeDemoExtension.php
├── Entity
├── Resources
│ ├── config
│ ├── public
│ └── views
│ └── Demo
│ └── index.html.twig
└── Tests
Test cases para las
distintas funcionalidades
de nuestro paquete.
Bundles
34
34Saturday, August 31, 13
Bundles
src/VendorName/MyBundle
35
35Saturday, August 31, 13
Micro Framework
36
36Saturday, August 31, 13
Micro Framework
37
Silex Cilex
37Saturday, August 31, 13
Micro Framework
38
Silex
38Saturday, August 31, 13
¿Quién lo usa?
39
39Saturday, August 31, 13
¿Preguntas?
40
40Saturday, August 31, 13
¡Gracias!
41
41Saturday, August 31, 13

Introducción a Symfony

  • 1.
  • 2.
  • 3.
    ¿Que es Symfony? •Conjuntode componentes 3 3Saturday, August 31, 13
  • 4.
    ¿Que es Symfony? •Conjuntode componentes •Full-stack Framework 4 4Saturday, August 31, 13
  • 5.
    ¿Que es Symfony? •Conjuntode componentes •Full-stack Framework •Micro-framework 5 5Saturday, August 31, 13
  • 6.
    ¿Que es Symfony? •Conjuntode componentes •Full-stack Framework •Micro-framework •Una gran comunidad 6 6Saturday, August 31, 13
  • 7.
  • 8.
    Objetivo • No reinventarla rueda 8Saturday, August 31, 13
  • 9.
    Objetivo • No reinventarla rueda • Separación - MVC 9Saturday, August 31, 13
  • 10.
    Objetivo • No reinventarla rueda • Separación - MVC • Calidad - TDD 10Saturday, August 31, 13
  • 11.
    Objetivo • No reinventarla rueda • Separación - MVC • Calidad - TDD • Exportabilidad 11Saturday, August 31, 13
  • 12.
    Objetivo • No reinventarla rueda • Separación - MVC • Calidad - TDD • Exportabilidad • Velocidad 12Saturday, August 31, 13
  • 13.
  • 14.
  • 15.
  • 16.
    PHP 5.3 Funciones lambda& Closures $items = array_filter( array(1, 2, 3, 4, 5), create_function('$item', 'return 4 > $item;') ); 16 16Saturday, August 31, 13
  • 17.
    PHP 5.3 Funciones lambda& Closures $items = array_filter(array(1, 2, 3, 4, 5), function ($item) { return 4 > $item; }); 17 17Saturday, August 31, 13
  • 18.
  • 19.
    Componentes •Librerías standalone •Implementan ciertafuncionalidad •Son la base del framework 19Saturday, August 31, 13
  • 20.
    Componentes BrowserKit Class loaderConfig Console CSS Selector Debug Dependency InjectionDependency Injection Dom Crawler Event Dispatcher Filesystem Finder Form HTTP FoundationHTTP Foundation HTTP KernelHTTP Kernel Intl Locale Options Resolver Process Property Access Routing Security Serializer Stopwatch Templating Yaml 20Saturday, August 31, 13
  • 21.
    Componentes BrowserKit Class loaderConfig Console CSS Selector Debug Dependency InjectionDependency Injection Dom Crawler Event Dispatcher Filesystem Finder Form HTTP FoundationHTTP Foundation HTTP KernelHTTP Kernel Intl Locale Options Resolver Process Property Access Routing Security Serializer Stopwatch Templating Yaml 21Saturday, August 31, 13
  • 22.
  • 23.
    ├── app │ ├──Resources │ ├── cache │ ├── config │ ├── logs │ └── AppKernel.php ├── src │ └── Acme ├── vendor └── web ├── bundles ├── css ├── images └── js Estructura de archivos por defecto. El proyecto 23 23Saturday, August 31, 13
  • 24.
    ├── app │ ├──Resources │ ├── cache │ ├── config │ ├── logs │ └── AppKernel.php ├── src │ └── Acme ├── vendor └── web ├── bundles ├── css ├── images └── js Contiene los archivos inician la ejecución de la aplicación, configuraciones, archivos de cache y recursos. La aplicación 24 24Saturday, August 31, 13
  • 25.
    ├── app │ ├──Resources │ ├── cache │ ├── config │ ├── logs │ └── AppKernel.php ├── src │ └── Acme ├── vendor └── web ├── bundles ├── css ├── images └── js Aquí se ubican los paquetes(bundles) y librerías comunes a todas las aplicaciones del proyecto Librerías del proyecto 25 25Saturday, August 31, 13
  • 26.
    ├── app │ ├──Resources │ ├── cache │ ├── config │ ├── logs │ └── AppKernel.php ├── src │ └── Acme ├── vendor └── web ├── bundles ├── css ├── images └── js •Librerías standalone. •No específicas del proyecto •Symfony! Librerías de terceros 26 26Saturday, August 31, 13
  • 27.
    ├── app │ ├──Resources │ ├── cache │ ├── config │ ├── logs │ └── AppKernel.php ├── src │ └── Acme ├── vendor └── web ├── bundles ├── css ├── images └── js •Único directorio público del proyecto •Front controllers •Assets •Uploads Document root 27 27Saturday, August 31, 13
  • 28.
    • Implementación deuna funcionalidad específica • Paquete exclusivo para uso en proyectos symfony. • Permite empaquetar funcionalidades • Integra librerías externas Bundles 28 28Saturday, August 31, 13
  • 29.
    ├── AcmeDemoBundle.php ├── Controller │├── DemoController.php ├── DependencyInjection │ └── AcmeDemoExtension.php ├── Entity ├── Resources │ ├── config │ ├── public │ └── views │ └── Demo │ └── index.html.twig └── Tests Estructura de archivos por defecto. Bundles 29 29Saturday, August 31, 13
  • 30.
    ├── AcmeDemoBundle.php ├── Controller │├── DemoController.php ├── DependencyInjection │ └── AcmeDemoExtension.php ├── Entity ├── Resources │ ├── config │ ├── public │ └── views │ └── Demo │ └── index.html.twig └── Tests Cotroladores. Es donde se encuentra la lógica de nuestro paquete. Bundles 30 30Saturday, August 31, 13
  • 31.
    ├── AcmeDemoBundle.php ├── Controller │├── DemoController.php ├── DependencyInjection │ └── AcmeDemoExtension.php ├── Entity ├── Resources │ ├── config │ ├── public │ └── views │ └── Demo │ └── index.html.twig └── Tests Es donde se procesa la configuración de nuestro paquete. Bundles 31 31Saturday, August 31, 13
  • 32.
    ├── AcmeDemoBundle.php ├── Controller │├── DemoController.php ├── DependencyInjection │ └── AcmeDemoExtension.php ├── Entity ├── Resources │ ├── config │ ├── public │ └── views │ └── Demo │ └── index.html.twig └── Tests •El modelo •Interacción con la base de datos. Bundles 32 32Saturday, August 31, 13
  • 33.
    ├── AcmeDemoBundle.php ├── Controller │├── DemoController.php ├── DependencyInjection │ └── AcmeDemoExtension.php ├── Entity ├── Resources │ ├── config │ ├── public │ └── views │ └── Demo │ └── index.html.twig └── Tests Recursos del paquete tales como la configuración de servicios, archivos públicos y templates. Bundles 33 33Saturday, August 31, 13
  • 34.
    ├── AcmeDemoBundle.php ├── Controller │├── DemoController.php ├── DependencyInjection │ └── AcmeDemoExtension.php ├── Entity ├── Resources │ ├── config │ ├── public │ └── views │ └── Demo │ └── index.html.twig └── Tests Test cases para las distintas funcionalidades de nuestro paquete. Bundles 34 34Saturday, August 31, 13
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.