SlideShare une entreprise Scribd logo
1  sur  69
Télécharger pour lire hors ligne
Symfony: Framework para desarrollo en PHP5
                                Raúl Fraile Beneyto

                                        @raulfraile
Symfony: Framework para desarrollo en PHP5




                                Índice

             -   ¿Qué es un framework y por qué utilizarlo?
             -   Frameworks PHP
             -   Symfony y Symfony2
             -   Primer proyecto con Symfony2
             -   Características interesantes de Symfony2
             -   Enlaces de interés



Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




¿Qué es un framework y por qué utilizarlo?
                      Conjunto estandarizado de conceptos, prácticas y criterios
                      para enfocar un tipo de problemática particular, que sirve
                      como referencia para enfrentar y resolver nuevos problemas
                      de índole similar.


                      Un framework simplifica el desarrollo de una aplicación mediante
                      la automatización de algunos de los patrones utilizados para
                      resolver las tareas comunes. Además, proporciona estructura al
                      código fuente, forzando al desarrollador a crear código más legible
                      y más fácil de mantener. Por último, facilita la programación de
                      aplicaciones, ya que encapsula operaciones complejas en
                      instrucciones sencillas.
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




            Problemas en la fase de desarrollo
Definir una estructura lógica del proyecto

  -   Crear una estructura de directorios propia
  -   ¿Dividimos por módulos? ¿Cada módulo en su carpeta?
  -   ¿Cómo mapeamos la base de datos?
  -   ¿Dónde metemos los tests unitarios?
  -   ¿Cómo llamamos a la carpeta de imágenes?
  -   …

En definitiva: Organización del proyecto


Problema: Si entra una persona nueva al proyecto hay que explicárselo TODO

  Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




          Problemas en la fase de desarrollo

Separación de la lógica de negocio y la presentación

Aplicaciones web con un .php por cada página, que accede a base de datos,
obtiene los resultados y genera el HTML, todo en el mismo fichero...

Una posible solución: Modelo Vista Controlador (MVC)




Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                            Modelo Vista Controlador
                                                     Puerta de entrada a la aplicación:

                                                     p.ej.: index.php

Representación de los datos                          Acceso a los datos

p.ej.: código HTML, RSS...                           p.ej.: base de datos, servicios
                                                     Web, ficheros externos...




      Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




           Problemas en la fase de desarrollo
Dependencia del tipo de base de datos

A no ser que utilicemos alguna librería para acceso a base de datos, nuestras
consultas serán dependientes de la base de datos utilizada. Un cambio de tipo
de base de datos (p.ej. De MySQL a SQL Server) nos obligaría a revisar las
consultas.

“Mapeado” de la base de datos

Tendremos que crear una serie de clases para mapear las tablas de la base de
datos (p.ej. Tabla Producto, class.producto.php). Un cambio en las tablas obliga
a modificar las clases.


 Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




          Problemas en la fase de desarrollo
Detección de bugs

Conforme la aplicación va creciendo se va “ensuciando” y cada vez es más
dificil encontrar los errores. Los tests unitarios y la obligación de mantener
la estructura pueden facilitar la tarea.

Publicar la aplicación

Si no utilizamos una herramienta tipo “Ant” o “Phing” se pueden producir
errores al olvidar subir algún archivo modificado o en orden incorrecto.



Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




          Problemas en la fase de desarrollo



  Formularios

  Tareas repetitivas de validar los datos introducidos, mostrar mensajes de
  error, no perder los datos introducidos cuando se produce un error...




Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                                Frameworks PHP

                      framework.zend.com                yiiframework.com




                                                           akelos.org
                         cakephp.org




                                                        symfony-project.org

                         codeigniter.com

Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




           ¿Qué es Symfony?

            -   Framework PHP5
            -   Creado por Fabien Potencier en 2007.
            -   Open-source
            -   Muy utilizado
            -   Comunidad muy grande
            -   Buena documentación
            -   Basado en buenas prácticas
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                       Symfony
                      Versiones




Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                                                   ¿Proyecto nuevo
                                                   o actualización?
           ¿Entonces uso Symfony 1.4 o Symfony2?



DEPENDE...                                       ¿Cuándo va a estar
                                                   en producción?



                                                 ¿Cuál es la versión
                                                   actual de PHP?
 Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




¿Entonces uso Symfony 1.4 o Symfony2?

Opinión personal: Aprender Symfony2

- La PR4 de Symfony2 tiene TODO lo que tendrá la
  versión final.
                      va a ser mejor que
- Symfony2 le va a dar 1.000 patadas a Symfony 1.4

Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                      Problemas de Symfony 1.4:

                      -   Muchos archivos
                      -   Configuración compleja
                      -   Dificil de aprender
                      -   Formularios
                      -   Rendimiento

Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




Symfony2 soluciona estos problemas:

 -   Menos archivos
 -   Mucho más fácil de aprender
 -   Más flexible
 -   Completo
 -   Utilización de estándares (PHPUnit, Zend_Cache,
     Zend_Logger, PHP 5.3 autoload, Java JSR303)

Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




Primer proyecto
 con Symfony2
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




 Crear un proyecto con Symfony2

   1) Bajar el sandbox

          GIT:
          git clone http://github.com/symfony/symfony-sandbox.git


          SVN:
          checkout http://svn.symfony-project.com/branches/2.0


          URL:
          http://symfony-reloaded.org/downloads/sandbox_2_0_PR4.zip (*.tgz)

Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                      Crear un proyecto con Symfony2




                                                    Una carpeta por cada aplicación
                                                    Algunos scripts
                                                    TODO el código de la aplicación
                                                    Carpeta pública: CSS, JS...




Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                      Crear un proyecto con Symfony2

                       Punto de entrada al entorno de desarrollo



                         Código HTML generado
                            por la aplicación



              Barra de herramientas
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                      Crear un proyecto con Symfony2




Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                            Crear un proyecto con Symfony2
/web/app_dev.php (Controlador frontal)




      Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                             Crear un proyecto con Symfony2
/app/config/routing.yml (Configuración global de las URL)




                            /src/HelloBundle/Resources/config/routing.yml (Configuración de las URL del bundle)

   Configuración
   en cascada

      Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                            Crear un proyecto con Symfony2
/src/Application/HelloBundle/Controller/HelloController.php (Configuración)




      Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                                        Plantillas PHP
/src/Application/HelloBundle/Resources/views/Hello/index.php (Vista)



                                                     /src/Application/HelloBundle/Resources/views/Hello/layout.php




      Raúl Fraile Beneyto                        /app/views/Hello/layout.php
Symfony: Framework para desarrollo en PHP5




                              Plantillas con Twig

Las plantillas pueden estar escritas en PHP o Twig

                         Twig: Template Engine

                         -   Más facil para los diseñadores
                         -   Muy rápido (se “compila” a PHP)
                         -   Conciso
                         -   Completo

                                                        twig-project.org
   Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                                  Plantillas con Twig
/src/Application/HelloBundle/Resources/views/Hello/index.twig (Vista)



                                                       /src/Application/HelloBundle/Resources/views/Hello/layout.twig




      Raúl Fraile Beneyto               /app/views/Hello/layout.php
Symfony: Framework para desarrollo en PHP5




                       Acceso a base de datos
BD = Estructura relacional


                                                       ORM
                                                    object-relational mapping

                                                   Evita utilizar una sintaxis
                                                   específica de un sistema
                                                  de bases de datos concreto

PHP5 y Symfony = Orientados a objetos
 Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                       Acceso a base de datos
ORMs:




 Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                          Acceso a base de datos
Configuración de la Base de Datos
/app/config/config.yml
                                     Si la base de datos existe, podemos pedirle
                                     a Doctrine que mapee las tablas

                                      Comando doctrine:mapping:import

                                     Si la base de datos NO existe, podemos crear
                                     las clases nosotros mismos. Después, se
                                     creará la base de datos a partir de esas clases

                                      Comandos
                                      - doctrine:database:create
                                      - doctrine:schema:create
    Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                         Acceso a base de datos
¿Cómo crearíamos una actividad nueva en la BD?




   Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                         Acceso a base de datos
¿Y obtener todas las actividades de la BD?




                                             SELECT a.id, a.titulo, a.aforo
                                             FROM actividad a




   Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                           Acceso a base de datos
¿Y obtener todas las actividades de la BD?
Plantilla:




     Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                                          Formularios
Creamos un formulario para introducir una actividad
/src/Application/HelloBundle/Controller/HelloController.php




    Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                                        Formularios
Creamos un formulario para introducir una actividad
/src/Application/HelloBundle/Resources/views/Hello/nueva.php




¿Y para recibir los datos del formulario?


    Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                                          Formularios
Creamos un formulario para introducir una actividad
/src/Application/HelloBundle/Controller/HelloController.php




    Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                               Formularios
Algunos controles predefinidos en Symfony2

                                  BÁSICOS
            TextField             TextAreaField            CheckboxField
          ChoiceField             PasswordField             HiddenField

                          CON INTERNACIONALIZACIÓN
          NumberField              IntegerField             PercentField
          MoneyField                DateField              BirthdayField
           TimeField              DateTimeField            TimezoneField

                                   OTROS
          RepeatedField
   Raúl Fraile Beneyto             FieldGroup              CollectionField
Symfony: Framework para desarrollo en PHP5




    Características
     interesantes
     de Symfony2
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                      Bundles
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                                  Bundles
¿Qué es un bundle?

- Un bundle es un “paquete” con una estructura definida, que puede
  contener cualquier cosa (clases, controladores, css...).

- Implementa una funcionalidad.

- Todo en Symfony2 son bundles.

- Sustituye a algunos conceptos de symfony 1 (plugins, librerías...)

- Permite una gran flexibilidad
   Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                             Bundles
Symfony2 está formado por Bundles:




   Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                               Bundles
Aparte de los bundles “oficiales”, podemos añadir a nuestro proyecto
Bundles creados por terceros:

- FacebookBundle

- TwitterBundle

- SitemapBundle

- HTMLPurifierBundle

- La versión 4 de phpBB se está programando como bundle de Symfony2
   Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                      Helpers
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                               Helpers
A diferencia de symfony 1.4, los helpers en Symfony2 son objetos.

Nos ayudan a generar código HTML.

P.ej. Generar la ruta de una imagen:

<img src="<?php echo $view['assets']->getUrl('images/logo.png') ?>" />

Ventaja: si cambiamos el DocumentRoot, no haría falta cambiar NADA.


   Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                                    Helpers
P.ej. Incluir CSS y JavaScripts


<?php $view['javascripts']->add('js/actividades.js') ?>
<?php echo $view['javascripts'] ?>


<?php $view['stylesheets']->add('css/estilos.css') ?>
<?php echo $view['stylesheets'] ?>


Ventaja: Las vistas, al “extenderse”, se van acumulando los CSS y JS.

   Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                               Helpers
P.ej. Generar un enlace


<a href="<?php
         echo $view['router']->generate('hello', array('name' => 'Raul'))
          ?>
">¡Hola Raúl!</a>

Generaría: <a href=”/hello/Raul”>¡Hola Raúl!</a>

Ventaja: Si las rutas cambian, simplemente haría falta cambiarlo
en el routing.yml, y la aplicación seguiría funcionando.

   Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




    Tests Unitarios

                      PHPUnit
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                         Tests Unitarios - PHPUNit


Symfony2 utiliza PHPUnit 3.5 (o superior) como framework de pruebas




          Manual: http://www.phpunit.de/manual/3.5/en/

   Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5


                                                           assertArrayHasKey()
                                                           assertClassHasAttribute()
                                                           assertClassHasStaticAttribute()
                                                           assertContains()
                                                           assertContainsOnly()
                                                           assertEmpty()

                      Tests Unitarios - PHPUNit            assertEqualXMLStructure()
                                                           assertEquals()
                                                           assertFalse()
                                                           assertFileEquals()
                                                           assertFileExists()
                                                           assertGreaterThan()
                                                           assertGreaterThanOrEqual()
                                                           assertInstanceOf()
                                                           assertInternalType()
                                                           assertLessThan()
                                                           assertLessThanOrEqual()
                                                           assertNull()
                                                           assertObjectHasAttribute()
                                                           assertRegExp()
                                                           assertStringMatchesFormat()
                                                           assertStringMatchesFormatFile()
                                                           assertSame()
                                                           assertSelectCount()
                                                           assertSelectEquals()
                                                           assertSelectRegExp()
                                                           assertStringEndsWith()
                                                           assertStringEqualsFile()
                                                           assertStringStartsWith()
                                                           assertTag()
                                                           assertThat()
                                                           assertTrue()
                                                           assertType()
Raúl Fraile Beneyto                                        assertXmlFileEqualsXmlFile()
                                                           assertXmlStringEqualsXmlFile()
                                                           assertXmlStringEqualsXmlString()
Symfony: Framework para desarrollo en PHP5




                      Tests Unitarios - PHPUNit




Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                      PHP 5.3.2
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                                 PHP 5.3.2

PHP 5.3 introdujo algunas mejoras que utiliza Symfony2 para permitir un
desarrollo más rápido y con mejor rendimiento:


- Mejora en un 20% el rendimiento.


- Permite namespaces




   Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                      Rápido
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




             Symfony2 es:
             - 2x más rápido que symfony 1.4.2
             - 3.5x más rápido que Zend 1.10
             - 5.5x más rápido que CakePHP 1.2.6




Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                      ¿Por qué es tan rápido?

                      - Utiliza PHP 5.3.2

                      - Lazy-loading

                      - Caché “interna”

                      - Acelerador web

Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                 ¿Cómo funciona el acelerador web?




Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                 ¿Cómo funciona el acelerador web?




Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                 ¿Cómo funciona el acelerador web?




Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                 ¿Cómo funciona el acelerador web?
                                                     Guarda páginas COMPLETAS




                                                          Acelerador


                                                           Aplicación

                                                            Apache



Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                              60'




                                                      1'
60'
                        10'
                                                60'
  Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                  ¿Solución?

                  ¿Cacheamos las páginas cada minuto?




                  NO
                  Solución: ESI (Edge Side Includes)
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




$this->render('HelloBundle:Hello:novedades.php');

$this->render('HelloBundle:Hello:novedades.php',
               array('standalone' => true));


                       <esi:include src=”...” />

 Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




                  Enlaces de
                   interés
Raúl Fraile Beneyto
Symfony: Framework para desarrollo en PHP5




Raúl Fraile Beneyto
                             symfony-reloaded.org
Symfony: Framework para desarrollo en PHP5




Raúl Fraile Beneyto
                          symfony-project.org/blog
Symfony: Framework para desarrollo en PHP5




Raúl Fraile Beneyto
                                            symfony.es
Symfony: Framework para desarrollo en PHP5




Raúl Fraile Beneyto
                        symfony2bundles.org
Symfony: Framework para desarrollo en PHP5




Raúl Fraile Beneyto
                                             @fabpot
Symfony: Framework para desarrollo en PHP5




MUCHAS GRACIAS!!!!
   Raúl Fraile Beneyto


     Twitter: @raulfraile

 Email: raulfraile@gmail.com

Contenu connexe

Similaire à Symfony Framework PHP

Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Frameworks de php
Frameworks de phpFrameworks de php
Frameworks de phpPipe Muñoz
 
Symfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzadaSymfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzadaCésar Suárez Ortega
 
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...Decharlas
 
Php un lenguaje de programación.........
Php un lenguaje de programación.........Php un lenguaje de programación.........
Php un lenguaje de programación.........HuevitoconCatsup1
 
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas CastellónSymfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas CastellónJordi Llonch
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Yaismel Miranda
 
Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011gorolabs
 
BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012Asier Marqués
 
Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPArsys
 

Similaire à Symfony Framework PHP (20)

Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Symfony 1 y 2
Symfony 1 y 2Symfony 1 y 2
Symfony 1 y 2
 
Symfony
SymfonySymfony
Symfony
 
Frameworks de php
Frameworks de phpFrameworks de php
Frameworks de php
 
Symfony
SymfonySymfony
Symfony
 
Symfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzadaSymfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzada
 
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
 
Symfony dagrinchi
Symfony dagrinchiSymfony dagrinchi
Symfony dagrinchi
 
Php un lenguaje de programación.........
Php un lenguaje de programación.........Php un lenguaje de programación.........
Php un lenguaje de programación.........
 
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas CastellónSymfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
 
Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011
 
BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012
 
Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHP
 
BD_EQ6_INV_PHP
BD_EQ6_INV_PHPBD_EQ6_INV_PHP
BD_EQ6_INV_PHP
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
 
Historia de PHP
Historia de PHPHistoria de PHP
Historia de PHP
 
Symfony
SymfonySymfony
Symfony
 
Symfony
SymfonySymfony
Symfony
 

Plus de ADWE Team

Frameworks para el desarrollo de juegos para dispositivo móviles
Frameworks para el desarrollo de juegos para dispositivo móvilesFrameworks para el desarrollo de juegos para dispositivo móviles
Frameworks para el desarrollo de juegos para dispositivo móvilesADWE Team
 
HTML5 + CSS3 + Wordpress = Responsive Web
HTML5 + CSS3 + Wordpress = Responsive WebHTML5 + CSS3 + Wordpress = Responsive Web
HTML5 + CSS3 + Wordpress = Responsive WebADWE Team
 
HTML5 dia de internet 2012
HTML5 dia de internet 2012HTML5 dia de internet 2012
HTML5 dia de internet 2012ADWE Team
 
Significado y usos de RSS
Significado y usos de RSSSignificado y usos de RSS
Significado y usos de RSSADWE Team
 
Responsive web y Wordpress
Responsive web y WordpressResponsive web y Wordpress
Responsive web y WordpressADWE Team
 
Introduccion html5
Introduccion html5Introduccion html5
Introduccion html5ADWE Team
 
Ponencia seo para el èxito con google 2011 copia
Ponencia seo para el èxito con google 2011   copiaPonencia seo para el èxito con google 2011   copia
Ponencia seo para el èxito con google 2011 copiaADWE Team
 
Diseñar para dispositivos móviles
Diseñar para dispositivos móvilesDiseñar para dispositivos móviles
Diseñar para dispositivos móvilesADWE Team
 
Potenciando tu web con APIs de Miquel Camps para ADWE Madrid
Potenciando tu web con APIs de Miquel Camps para ADWE MadridPotenciando tu web con APIs de Miquel Camps para ADWE Madrid
Potenciando tu web con APIs de Miquel Camps para ADWE MadridADWE Team
 
Presentacion de Fran Moreno para adwe
Presentacion de Fran Moreno para adwePresentacion de Fran Moreno para adwe
Presentacion de Fran Moreno para adweADWE Team
 
Rompiendo moldes
Rompiendo moldesRompiendo moldes
Rompiendo moldesADWE Team
 
Gwt intro adwe_murcia
Gwt intro adwe_murciaGwt intro adwe_murcia
Gwt intro adwe_murciaADWE Team
 
5 tips de diseñadores a maquetadores... y viceversa
5 tips de diseñadores a maquetadores... y viceversa5 tips de diseñadores a maquetadores... y viceversa
5 tips de diseñadores a maquetadores... y viceversaADWE Team
 
Presentación Framework CodeIgniter
Presentación Framework CodeIgniter Presentación Framework CodeIgniter
Presentación Framework CodeIgniter ADWE Team
 
Presentación Extreme Programming
Presentación Extreme ProgrammingPresentación Extreme Programming
Presentación Extreme ProgrammingADWE Team
 
El momento del diseño, con Carlos Úbeda, de DNXGroup
 El momento del diseño, con Carlos Úbeda, de DNXGroup El momento del diseño, con Carlos Úbeda, de DNXGroup
El momento del diseño, con Carlos Úbeda, de DNXGroupADWE Team
 
Presentacion seo analisis
Presentacion seo analisisPresentacion seo analisis
Presentacion seo analisisADWE Team
 
Presentación de ACTO Framework parte I
Presentación de ACTO Framework parte IPresentación de ACTO Framework parte I
Presentación de ACTO Framework parte IADWE Team
 
Presentación de ACTO Framework parte II
Presentación de ACTO Framework parte IIPresentación de ACTO Framework parte II
Presentación de ACTO Framework parte IIADWE Team
 

Plus de ADWE Team (20)

Frameworks para el desarrollo de juegos para dispositivo móviles
Frameworks para el desarrollo de juegos para dispositivo móvilesFrameworks para el desarrollo de juegos para dispositivo móviles
Frameworks para el desarrollo de juegos para dispositivo móviles
 
HTML5 + CSS3 + Wordpress = Responsive Web
HTML5 + CSS3 + Wordpress = Responsive WebHTML5 + CSS3 + Wordpress = Responsive Web
HTML5 + CSS3 + Wordpress = Responsive Web
 
HTML5 dia de internet 2012
HTML5 dia de internet 2012HTML5 dia de internet 2012
HTML5 dia de internet 2012
 
Significado y usos de RSS
Significado y usos de RSSSignificado y usos de RSS
Significado y usos de RSS
 
Responsive web y Wordpress
Responsive web y WordpressResponsive web y Wordpress
Responsive web y Wordpress
 
Git git hub
Git git hubGit git hub
Git git hub
 
Introduccion html5
Introduccion html5Introduccion html5
Introduccion html5
 
Ponencia seo para el èxito con google 2011 copia
Ponencia seo para el èxito con google 2011   copiaPonencia seo para el èxito con google 2011   copia
Ponencia seo para el èxito con google 2011 copia
 
Diseñar para dispositivos móviles
Diseñar para dispositivos móvilesDiseñar para dispositivos móviles
Diseñar para dispositivos móviles
 
Potenciando tu web con APIs de Miquel Camps para ADWE Madrid
Potenciando tu web con APIs de Miquel Camps para ADWE MadridPotenciando tu web con APIs de Miquel Camps para ADWE Madrid
Potenciando tu web con APIs de Miquel Camps para ADWE Madrid
 
Presentacion de Fran Moreno para adwe
Presentacion de Fran Moreno para adwePresentacion de Fran Moreno para adwe
Presentacion de Fran Moreno para adwe
 
Rompiendo moldes
Rompiendo moldesRompiendo moldes
Rompiendo moldes
 
Gwt intro adwe_murcia
Gwt intro adwe_murciaGwt intro adwe_murcia
Gwt intro adwe_murcia
 
5 tips de diseñadores a maquetadores... y viceversa
5 tips de diseñadores a maquetadores... y viceversa5 tips de diseñadores a maquetadores... y viceversa
5 tips de diseñadores a maquetadores... y viceversa
 
Presentación Framework CodeIgniter
Presentación Framework CodeIgniter Presentación Framework CodeIgniter
Presentación Framework CodeIgniter
 
Presentación Extreme Programming
Presentación Extreme ProgrammingPresentación Extreme Programming
Presentación Extreme Programming
 
El momento del diseño, con Carlos Úbeda, de DNXGroup
 El momento del diseño, con Carlos Úbeda, de DNXGroup El momento del diseño, con Carlos Úbeda, de DNXGroup
El momento del diseño, con Carlos Úbeda, de DNXGroup
 
Presentacion seo analisis
Presentacion seo analisisPresentacion seo analisis
Presentacion seo analisis
 
Presentación de ACTO Framework parte I
Presentación de ACTO Framework parte IPresentación de ACTO Framework parte I
Presentación de ACTO Framework parte I
 
Presentación de ACTO Framework parte II
Presentación de ACTO Framework parte IIPresentación de ACTO Framework parte II
Presentación de ACTO Framework parte II
 

Dernier

Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 

Dernier (20)

Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 

Symfony Framework PHP

  • 1. Symfony: Framework para desarrollo en PHP5 Raúl Fraile Beneyto @raulfraile
  • 2. Symfony: Framework para desarrollo en PHP5 Índice - ¿Qué es un framework y por qué utilizarlo? - Frameworks PHP - Symfony y Symfony2 - Primer proyecto con Symfony2 - Características interesantes de Symfony2 - Enlaces de interés Raúl Fraile Beneyto
  • 3. Symfony: Framework para desarrollo en PHP5 ¿Qué es un framework y por qué utilizarlo? Conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular, que sirve como referencia para enfrentar y resolver nuevos problemas de índole similar. Un framework simplifica el desarrollo de una aplicación mediante la automatización de algunos de los patrones utilizados para resolver las tareas comunes. Además, proporciona estructura al código fuente, forzando al desarrollador a crear código más legible y más fácil de mantener. Por último, facilita la programación de aplicaciones, ya que encapsula operaciones complejas en instrucciones sencillas. Raúl Fraile Beneyto
  • 4. Symfony: Framework para desarrollo en PHP5 Problemas en la fase de desarrollo Definir una estructura lógica del proyecto - Crear una estructura de directorios propia - ¿Dividimos por módulos? ¿Cada módulo en su carpeta? - ¿Cómo mapeamos la base de datos? - ¿Dónde metemos los tests unitarios? - ¿Cómo llamamos a la carpeta de imágenes? - … En definitiva: Organización del proyecto Problema: Si entra una persona nueva al proyecto hay que explicárselo TODO Raúl Fraile Beneyto
  • 5. Symfony: Framework para desarrollo en PHP5 Problemas en la fase de desarrollo Separación de la lógica de negocio y la presentación Aplicaciones web con un .php por cada página, que accede a base de datos, obtiene los resultados y genera el HTML, todo en el mismo fichero... Una posible solución: Modelo Vista Controlador (MVC) Raúl Fraile Beneyto
  • 6. Symfony: Framework para desarrollo en PHP5 Modelo Vista Controlador Puerta de entrada a la aplicación: p.ej.: index.php Representación de los datos Acceso a los datos p.ej.: código HTML, RSS... p.ej.: base de datos, servicios Web, ficheros externos... Raúl Fraile Beneyto
  • 7. Symfony: Framework para desarrollo en PHP5 Problemas en la fase de desarrollo Dependencia del tipo de base de datos A no ser que utilicemos alguna librería para acceso a base de datos, nuestras consultas serán dependientes de la base de datos utilizada. Un cambio de tipo de base de datos (p.ej. De MySQL a SQL Server) nos obligaría a revisar las consultas. “Mapeado” de la base de datos Tendremos que crear una serie de clases para mapear las tablas de la base de datos (p.ej. Tabla Producto, class.producto.php). Un cambio en las tablas obliga a modificar las clases. Raúl Fraile Beneyto
  • 8. Symfony: Framework para desarrollo en PHP5 Problemas en la fase de desarrollo Detección de bugs Conforme la aplicación va creciendo se va “ensuciando” y cada vez es más dificil encontrar los errores. Los tests unitarios y la obligación de mantener la estructura pueden facilitar la tarea. Publicar la aplicación Si no utilizamos una herramienta tipo “Ant” o “Phing” se pueden producir errores al olvidar subir algún archivo modificado o en orden incorrecto. Raúl Fraile Beneyto
  • 9. Symfony: Framework para desarrollo en PHP5 Problemas en la fase de desarrollo Formularios Tareas repetitivas de validar los datos introducidos, mostrar mensajes de error, no perder los datos introducidos cuando se produce un error... Raúl Fraile Beneyto
  • 10. Symfony: Framework para desarrollo en PHP5 Frameworks PHP framework.zend.com yiiframework.com akelos.org cakephp.org symfony-project.org codeigniter.com Raúl Fraile Beneyto
  • 11. Symfony: Framework para desarrollo en PHP5 ¿Qué es Symfony? - Framework PHP5 - Creado por Fabien Potencier en 2007. - Open-source - Muy utilizado - Comunidad muy grande - Buena documentación - Basado en buenas prácticas Raúl Fraile Beneyto
  • 12. Symfony: Framework para desarrollo en PHP5 Symfony Versiones Raúl Fraile Beneyto
  • 13. Symfony: Framework para desarrollo en PHP5 ¿Proyecto nuevo o actualización? ¿Entonces uso Symfony 1.4 o Symfony2? DEPENDE... ¿Cuándo va a estar en producción? ¿Cuál es la versión actual de PHP? Raúl Fraile Beneyto
  • 14. Symfony: Framework para desarrollo en PHP5 ¿Entonces uso Symfony 1.4 o Symfony2? Opinión personal: Aprender Symfony2 - La PR4 de Symfony2 tiene TODO lo que tendrá la versión final. va a ser mejor que - Symfony2 le va a dar 1.000 patadas a Symfony 1.4 Raúl Fraile Beneyto
  • 15. Symfony: Framework para desarrollo en PHP5 Problemas de Symfony 1.4: - Muchos archivos - Configuración compleja - Dificil de aprender - Formularios - Rendimiento Raúl Fraile Beneyto
  • 16. Symfony: Framework para desarrollo en PHP5 Symfony2 soluciona estos problemas: - Menos archivos - Mucho más fácil de aprender - Más flexible - Completo - Utilización de estándares (PHPUnit, Zend_Cache, Zend_Logger, PHP 5.3 autoload, Java JSR303) Raúl Fraile Beneyto
  • 17. Symfony: Framework para desarrollo en PHP5 Primer proyecto con Symfony2 Raúl Fraile Beneyto
  • 18. Symfony: Framework para desarrollo en PHP5 Crear un proyecto con Symfony2 1) Bajar el sandbox GIT: git clone http://github.com/symfony/symfony-sandbox.git SVN: checkout http://svn.symfony-project.com/branches/2.0 URL: http://symfony-reloaded.org/downloads/sandbox_2_0_PR4.zip (*.tgz) Raúl Fraile Beneyto
  • 19. Symfony: Framework para desarrollo en PHP5 Crear un proyecto con Symfony2 Una carpeta por cada aplicación Algunos scripts TODO el código de la aplicación Carpeta pública: CSS, JS... Raúl Fraile Beneyto
  • 20. Symfony: Framework para desarrollo en PHP5 Crear un proyecto con Symfony2 Punto de entrada al entorno de desarrollo Código HTML generado por la aplicación Barra de herramientas Raúl Fraile Beneyto
  • 21. Symfony: Framework para desarrollo en PHP5 Crear un proyecto con Symfony2 Raúl Fraile Beneyto
  • 22. Symfony: Framework para desarrollo en PHP5 Crear un proyecto con Symfony2 /web/app_dev.php (Controlador frontal) Raúl Fraile Beneyto
  • 23. Symfony: Framework para desarrollo en PHP5 Crear un proyecto con Symfony2 /app/config/routing.yml (Configuración global de las URL) /src/HelloBundle/Resources/config/routing.yml (Configuración de las URL del bundle) Configuración en cascada Raúl Fraile Beneyto
  • 24. Symfony: Framework para desarrollo en PHP5 Crear un proyecto con Symfony2 /src/Application/HelloBundle/Controller/HelloController.php (Configuración) Raúl Fraile Beneyto
  • 25. Symfony: Framework para desarrollo en PHP5 Plantillas PHP /src/Application/HelloBundle/Resources/views/Hello/index.php (Vista) /src/Application/HelloBundle/Resources/views/Hello/layout.php Raúl Fraile Beneyto /app/views/Hello/layout.php
  • 26. Symfony: Framework para desarrollo en PHP5 Plantillas con Twig Las plantillas pueden estar escritas en PHP o Twig Twig: Template Engine - Más facil para los diseñadores - Muy rápido (se “compila” a PHP) - Conciso - Completo twig-project.org Raúl Fraile Beneyto
  • 27. Symfony: Framework para desarrollo en PHP5 Plantillas con Twig /src/Application/HelloBundle/Resources/views/Hello/index.twig (Vista) /src/Application/HelloBundle/Resources/views/Hello/layout.twig Raúl Fraile Beneyto /app/views/Hello/layout.php
  • 28. Symfony: Framework para desarrollo en PHP5 Acceso a base de datos BD = Estructura relacional ORM object-relational mapping Evita utilizar una sintaxis específica de un sistema de bases de datos concreto PHP5 y Symfony = Orientados a objetos Raúl Fraile Beneyto
  • 29. Symfony: Framework para desarrollo en PHP5 Acceso a base de datos ORMs: Raúl Fraile Beneyto
  • 30. Symfony: Framework para desarrollo en PHP5 Acceso a base de datos Configuración de la Base de Datos /app/config/config.yml Si la base de datos existe, podemos pedirle a Doctrine que mapee las tablas Comando doctrine:mapping:import Si la base de datos NO existe, podemos crear las clases nosotros mismos. Después, se creará la base de datos a partir de esas clases Comandos - doctrine:database:create - doctrine:schema:create Raúl Fraile Beneyto
  • 31. Symfony: Framework para desarrollo en PHP5 Acceso a base de datos ¿Cómo crearíamos una actividad nueva en la BD? Raúl Fraile Beneyto
  • 32. Symfony: Framework para desarrollo en PHP5 Acceso a base de datos ¿Y obtener todas las actividades de la BD? SELECT a.id, a.titulo, a.aforo FROM actividad a Raúl Fraile Beneyto
  • 33. Symfony: Framework para desarrollo en PHP5 Acceso a base de datos ¿Y obtener todas las actividades de la BD? Plantilla: Raúl Fraile Beneyto
  • 34. Symfony: Framework para desarrollo en PHP5 Formularios Creamos un formulario para introducir una actividad /src/Application/HelloBundle/Controller/HelloController.php Raúl Fraile Beneyto
  • 35. Symfony: Framework para desarrollo en PHP5 Formularios Creamos un formulario para introducir una actividad /src/Application/HelloBundle/Resources/views/Hello/nueva.php ¿Y para recibir los datos del formulario? Raúl Fraile Beneyto
  • 36. Symfony: Framework para desarrollo en PHP5 Formularios Creamos un formulario para introducir una actividad /src/Application/HelloBundle/Controller/HelloController.php Raúl Fraile Beneyto
  • 37. Symfony: Framework para desarrollo en PHP5 Formularios Algunos controles predefinidos en Symfony2 BÁSICOS TextField TextAreaField CheckboxField ChoiceField PasswordField HiddenField CON INTERNACIONALIZACIÓN NumberField IntegerField PercentField MoneyField DateField BirthdayField TimeField DateTimeField TimezoneField OTROS RepeatedField Raúl Fraile Beneyto FieldGroup CollectionField
  • 38. Symfony: Framework para desarrollo en PHP5 Características interesantes de Symfony2 Raúl Fraile Beneyto
  • 39. Symfony: Framework para desarrollo en PHP5 Bundles Raúl Fraile Beneyto
  • 40. Symfony: Framework para desarrollo en PHP5 Bundles ¿Qué es un bundle? - Un bundle es un “paquete” con una estructura definida, que puede contener cualquier cosa (clases, controladores, css...). - Implementa una funcionalidad. - Todo en Symfony2 son bundles. - Sustituye a algunos conceptos de symfony 1 (plugins, librerías...) - Permite una gran flexibilidad Raúl Fraile Beneyto
  • 41. Symfony: Framework para desarrollo en PHP5 Bundles Symfony2 está formado por Bundles: Raúl Fraile Beneyto
  • 42. Symfony: Framework para desarrollo en PHP5 Bundles Aparte de los bundles “oficiales”, podemos añadir a nuestro proyecto Bundles creados por terceros: - FacebookBundle - TwitterBundle - SitemapBundle - HTMLPurifierBundle - La versión 4 de phpBB se está programando como bundle de Symfony2 Raúl Fraile Beneyto
  • 43. Symfony: Framework para desarrollo en PHP5 Helpers Raúl Fraile Beneyto
  • 44. Symfony: Framework para desarrollo en PHP5 Helpers A diferencia de symfony 1.4, los helpers en Symfony2 son objetos. Nos ayudan a generar código HTML. P.ej. Generar la ruta de una imagen: <img src="<?php echo $view['assets']->getUrl('images/logo.png') ?>" /> Ventaja: si cambiamos el DocumentRoot, no haría falta cambiar NADA. Raúl Fraile Beneyto
  • 45. Symfony: Framework para desarrollo en PHP5 Helpers P.ej. Incluir CSS y JavaScripts <?php $view['javascripts']->add('js/actividades.js') ?> <?php echo $view['javascripts'] ?> <?php $view['stylesheets']->add('css/estilos.css') ?> <?php echo $view['stylesheets'] ?> Ventaja: Las vistas, al “extenderse”, se van acumulando los CSS y JS. Raúl Fraile Beneyto
  • 46. Symfony: Framework para desarrollo en PHP5 Helpers P.ej. Generar un enlace <a href="<?php echo $view['router']->generate('hello', array('name' => 'Raul')) ?> ">¡Hola Raúl!</a> Generaría: <a href=”/hello/Raul”>¡Hola Raúl!</a> Ventaja: Si las rutas cambian, simplemente haría falta cambiarlo en el routing.yml, y la aplicación seguiría funcionando. Raúl Fraile Beneyto
  • 47. Symfony: Framework para desarrollo en PHP5 Tests Unitarios PHPUnit Raúl Fraile Beneyto
  • 48. Symfony: Framework para desarrollo en PHP5 Tests Unitarios - PHPUNit Symfony2 utiliza PHPUnit 3.5 (o superior) como framework de pruebas Manual: http://www.phpunit.de/manual/3.5/en/ Raúl Fraile Beneyto
  • 49. Symfony: Framework para desarrollo en PHP5 assertArrayHasKey() assertClassHasAttribute() assertClassHasStaticAttribute() assertContains() assertContainsOnly() assertEmpty() Tests Unitarios - PHPUNit assertEqualXMLStructure() assertEquals() assertFalse() assertFileEquals() assertFileExists() assertGreaterThan() assertGreaterThanOrEqual() assertInstanceOf() assertInternalType() assertLessThan() assertLessThanOrEqual() assertNull() assertObjectHasAttribute() assertRegExp() assertStringMatchesFormat() assertStringMatchesFormatFile() assertSame() assertSelectCount() assertSelectEquals() assertSelectRegExp() assertStringEndsWith() assertStringEqualsFile() assertStringStartsWith() assertTag() assertThat() assertTrue() assertType() Raúl Fraile Beneyto assertXmlFileEqualsXmlFile() assertXmlStringEqualsXmlFile() assertXmlStringEqualsXmlString()
  • 50. Symfony: Framework para desarrollo en PHP5 Tests Unitarios - PHPUNit Raúl Fraile Beneyto
  • 51. Symfony: Framework para desarrollo en PHP5 PHP 5.3.2 Raúl Fraile Beneyto
  • 52. Symfony: Framework para desarrollo en PHP5 PHP 5.3.2 PHP 5.3 introdujo algunas mejoras que utiliza Symfony2 para permitir un desarrollo más rápido y con mejor rendimiento: - Mejora en un 20% el rendimiento. - Permite namespaces Raúl Fraile Beneyto
  • 53. Symfony: Framework para desarrollo en PHP5 Rápido Raúl Fraile Beneyto
  • 54. Symfony: Framework para desarrollo en PHP5 Symfony2 es: - 2x más rápido que symfony 1.4.2 - 3.5x más rápido que Zend 1.10 - 5.5x más rápido que CakePHP 1.2.6 Raúl Fraile Beneyto
  • 55. Symfony: Framework para desarrollo en PHP5 ¿Por qué es tan rápido? - Utiliza PHP 5.3.2 - Lazy-loading - Caché “interna” - Acelerador web Raúl Fraile Beneyto
  • 56. Symfony: Framework para desarrollo en PHP5 ¿Cómo funciona el acelerador web? Raúl Fraile Beneyto
  • 57. Symfony: Framework para desarrollo en PHP5 ¿Cómo funciona el acelerador web? Raúl Fraile Beneyto
  • 58. Symfony: Framework para desarrollo en PHP5 ¿Cómo funciona el acelerador web? Raúl Fraile Beneyto
  • 59. Symfony: Framework para desarrollo en PHP5 ¿Cómo funciona el acelerador web? Guarda páginas COMPLETAS Acelerador Aplicación Apache Raúl Fraile Beneyto
  • 60. Symfony: Framework para desarrollo en PHP5 60' 1' 60' 10' 60' Raúl Fraile Beneyto
  • 61. Symfony: Framework para desarrollo en PHP5 ¿Solución? ¿Cacheamos las páginas cada minuto? NO Solución: ESI (Edge Side Includes) Raúl Fraile Beneyto
  • 62. Symfony: Framework para desarrollo en PHP5 $this->render('HelloBundle:Hello:novedades.php'); $this->render('HelloBundle:Hello:novedades.php', array('standalone' => true)); <esi:include src=”...” /> Raúl Fraile Beneyto
  • 63. Symfony: Framework para desarrollo en PHP5 Enlaces de interés Raúl Fraile Beneyto
  • 64. Symfony: Framework para desarrollo en PHP5 Raúl Fraile Beneyto symfony-reloaded.org
  • 65. Symfony: Framework para desarrollo en PHP5 Raúl Fraile Beneyto symfony-project.org/blog
  • 66. Symfony: Framework para desarrollo en PHP5 Raúl Fraile Beneyto symfony.es
  • 67. Symfony: Framework para desarrollo en PHP5 Raúl Fraile Beneyto symfony2bundles.org
  • 68. Symfony: Framework para desarrollo en PHP5 Raúl Fraile Beneyto @fabpot
  • 69. Symfony: Framework para desarrollo en PHP5 MUCHAS GRACIAS!!!! Raúl Fraile Beneyto Twitter: @raulfraile Email: raulfraile@gmail.com