Your SlideShare is downloading. ×
0
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Presentacion Symfony2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Presentacion Symfony2

2,201

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,201
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
74
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  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ésRaú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 desarrolloDefinir 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 proyectoProblema: 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 desarrolloSeparación de la lógica de negocio y la presentaciónAplicaciones 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.phpRepresentación de los datos Acceso a los datosp.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 Modelo Vista ControladorRaúl Fraile Beneyto
  8. Symfony: Framework para desarrollo en PHP5 Problemas en la fase de desarrolloDependencia del tipo de base de datosA no ser que utilicemos alguna librería para acceso a base de datos, nuestrasconsultas serán dependientes de la base de datos utilizada. Un cambio de tipode base de datos (p.ej. De MySQL a SQL Server) nos obligaría a revisar lasconsultas.“Mapeado” de la base de datosTendremos que crear una serie de clases para mapear las tablas de la base dedatos (p.ej. Tabla Producto, class.producto.php). Un cambio en las tablas obligaa modificar las clases. Raúl Fraile Beneyto
  9. Symfony: Framework para desarrollo en PHP5 Problemas en la fase de desarrolloDetección de bugsConforme la aplicación va creciendo se va “ensuciando” y cada vez es másdificil encontrar los errores. Los tests unitarios y la obligación de mantenerla estructura pueden facilitar la tarea.Publicar la aplicaciónSi no utilizamos una herramienta tipo “Ant” o “Phing” se pueden producirerrores al olvidar subir algún archivo modificado o en orden incorrecto.Raúl Fraile Beneyto
  10. 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... Seguridad de la aplicación Defenderse ante ataques XSS (Cross-site scripting), CSRF (Cross Site Request Forgery), SQL Injection...Raúl Fraile Beneyto
  11. Symfony: Framework para desarrollo en PHP5 Frameworks PHP framework.zend.com yiiframework.com akelos.org cakephp.org symfony-project.org codeigniter.comRaúl Fraile Beneyto
  12. Symfony: Framework para desarrollo en PHP5Raúl Fraile Beneyto
  13. 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ácticasRaúl Fraile Beneyto
  14. Symfony: Framework para desarrollo en PHP5 Symfony VersionesRaúl Fraile Beneyto
  15. 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
  16. 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.4Raúl Fraile Beneyto
  17. Symfony: Framework para desarrollo en PHP5 Problemas de Symfony 1.4: - Muchos archivos - Configuración compleja - Dificil de aprender - Formularios - RendimientoRaúl Fraile Beneyto
  18. Symfony: Framework para desarrollo en PHP5Symfony2 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
  19. Symfony: Framework para desarrollo en PHP5Primer proyecto con Symfony2Raúl Fraile Beneyto
  20. 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
  21. 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
  22. 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 herramientasRaúl Fraile Beneyto
  23. Symfony: Framework para desarrollo en PHP5 Crear un proyecto con Symfony2Raúl Fraile Beneyto
  24. Symfony: Framework para desarrollo en PHP5 Crear un proyecto con Symfony2/web/app_dev.php (Controlador frontal) Raúl Fraile Beneyto
  25. 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
  26. Symfony: Framework para desarrollo en PHP5 Crear un proyecto con Symfony2/src/Application/HelloBundle/Controller/HelloController.php (Configuración) Raúl Fraile Beneyto
  27. 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
  28. Symfony: Framework para desarrollo en PHP5 Plantillas con TwigLas 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
  29. 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
  30. Symfony: Framework para desarrollo en PHP5 Acceso a base de datosBD = Estructura relacional ORM object-relational mapping Evita utilizar una sintaxis específica de un sistema de bases de datos concretoPHP5 y Symfony = Orientados a objetos Raúl Fraile Beneyto
  31. Symfony: Framework para desarrollo en PHP5 Acceso a base de datosORMs: Raúl Fraile Beneyto
  32. Symfony: Framework para desarrollo en PHP5 Acceso a base de datosConfiguració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
  33. 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
  34. 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
  35. Symfony: Framework para desarrollo en PHP5 Acceso a base de datos¿Y obtener todas las actividades de la BD?Plantilla: Raúl Fraile Beneyto
  36. Symfony: Framework para desarrollo en PHP5 FormulariosCreamos un formulario para introducir una actividad/src/Application/HelloBundle/Controller/HelloController.php Raúl Fraile Beneyto
  37. Symfony: Framework para desarrollo en PHP5 FormulariosCreamos 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
  38. Symfony: Framework para desarrollo en PHP5 FormulariosCreamos un formulario para introducir una actividad/src/Application/HelloBundle/Controller/HelloController.php Raúl Fraile Beneyto
  39. Symfony: Framework para desarrollo en PHP5 FormulariosAlgunos controles predefinidos en Symfony2 Raúl Fraile Beneyto
  40. Symfony: Framework para desarrollo en PHP5 Características interesantes de Symfony2Raúl Fraile Beneyto
  41. Symfony: Framework para desarrollo en PHP5 BundlesRaúl Fraile Beneyto
  42. 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
  43. Symfony: Framework para desarrollo en PHP5 BundlesSymfony2 está formado por Bundles: Raúl Fraile Beneyto
  44. Symfony: Framework para desarrollo en PHP5 BundlesAparte de los bundles “oficiales”, podemos añadir a nuestro proyectoBundles creados por terceros:- FacebookBundle- TwitterBundle- SitemapBundle- HTMLPurifierBundle- La versión 4 de phpBB se está programando como bundle de Symfony2 Raúl Fraile Beneyto
  45. Symfony: Framework para desarrollo en PHP5 HelpersRaúl Fraile Beneyto
  46. Symfony: Framework para desarrollo en PHP5 HelpersA 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
  47. Symfony: Framework para desarrollo en PHP5 HelpersP.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
  48. Symfony: Framework para desarrollo en PHP5 HelpersP.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 cambiarloen el routing.yml, y la aplicación seguiría funcionando. Raúl Fraile Beneyto
  49. Symfony: Framework para desarrollo en PHP5 Tests Unitarios PHPUnitRaúl Fraile Beneyto
  50. Symfony: Framework para desarrollo en PHP5 Tests Unitarios - PHPUNitSymfony2 utiliza PHPUnit 3.5 (o superior) como framework de pruebas Manual: http://www.phpunit.de/manual/3.5/en/ Raúl Fraile Beneyto
  51. 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()
  52. Symfony: Framework para desarrollo en PHP5 Tests Unitarios - PHPUNitRaúl Fraile Beneyto
  53. Symfony: Framework para desarrollo en PHP5 PHP 5.3.2Raúl Fraile Beneyto
  54. Symfony: Framework para desarrollo en PHP5 PHP 5.3.2PHP 5.3 introdujo algunas mejoras que utiliza Symfony2 para permitir undesarrollo más rápido y con mejor rendimiento:- Mejora en un 20% el rendimiento.- Permite namespaces Raúl Fraile Beneyto
  55. Symfony: Framework para desarrollo en PHP5 ConsolaRaúl Fraile Beneyto
  56. Symfony: Framework para desarrollo en PHP5 Consolaphp app/console -s Raúl Fraile Beneyto
  57. Symfony: Framework para desarrollo en PHP5 RápidoRaúl Fraile Beneyto
  58. Symfony: Framework para desarrollo en PHP5Fabien Potencier : “Fast as Hell” Raúl Fraile Beneyto
  59. 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.6Raúl Fraile Beneyto
  60. Symfony: Framework para desarrollo en PHP5 ¿Por qué es tan rápido? - Utiliza PHP 5.3.2 - Lazy-loading - Caché “interna” - Acelerador webRaúl Fraile Beneyto
  61. Symfony: Framework para desarrollo en PHP5 ¿Cómo funciona el acelerador web?Raúl Fraile Beneyto
  62. Symfony: Framework para desarrollo en PHP5 ¿Cómo funciona el acelerador web?Raúl Fraile Beneyto
  63. Symfony: Framework para desarrollo en PHP5 ¿Cómo funciona el acelerador web?Raúl Fraile Beneyto
  64. Symfony: Framework para desarrollo en PHP5 ¿Cómo funciona el acelerador web? Guarda páginas COMPLETAS Acelerador Aplicación ApacheRaúl Fraile Beneyto
  65. Symfony: Framework para desarrollo en PHP5 60 160 10 60 Raúl Fraile Beneyto
  66. 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
  67. 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
  68. Symfony: Framework para desarrollo en PHP5 Enlaces de interésRaúl Fraile Beneyto
  69. Symfony: Framework para desarrollo en PHP5Raúl Fraile Beneyto symfony-reloaded.org
  70. Symfony: Framework para desarrollo en PHP5Raúl Fraile Beneyto symfony-project.org/blog
  71. Symfony: Framework para desarrollo en PHP5Raúl Fraile Beneyto symfony.es
  72. Symfony: Framework para desarrollo en PHP5Raúl Fraile Beneyto symfony2bundles.org
  73. Symfony: Framework para desarrollo en PHP5Raúl Fraile Beneyto @fabpot
  74. Symfony: Framework para desarrollo en PHP5MUCHAS GRACIAS!!!! Raúl Fraile Beneyto Twitter: @raulfraile Email: raulfraile@gmail.com

×