Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP

1.681 visualizaciones

Publicado el

Introducción práctica al microframework Silex de PHP

Publicado en: Internet
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP

  1. 1. Introducción a Silex Aprendiendo a hacer las cosas bien con PHP Daniel Primo @delineas www.danielprimo.es
  2. 2. Vamos a aprender PHP
  3. 3. Vamos a aprender PHP
  4. 4. ¿Quién soy? Daniel Primo @delineas danielprimo.es “Constructor freelance de mundo online”
  5. 5. No soy un experto. Sólo os cuento mi experiencia.
  6. 6. ¿Soy programdor?
  7. 7. Soy programador constructor
  8. 8. El día que todo cambió 9 de Noviembre de 2012
  9. 9. “Exorcismo de codigo en PHP” Charla de Agilecyl con Pepe Doval Si no aspiras a mejorar en tu trabajo, ¿por qué aspiras a cobrar por ello?
  10. 10. Soy programador
  11. 11. Y a medio camino...
  12. 12. ¿Qué es el sílex? El sílex (SiO2), se usó en la Edad de Piedra para la elaboración de herramientas cortantes, por su capacidad de romperse en lascas (fractura concoidea, láminas rectas con ligeras curvas) de bordes muy agudos. También fue usado para encender fuego por su capacidad de crear chispas al chocarse con otra pieza de igual o mayor dureza. Generalmente se halla asociado con la caliza, rocas sedimentarias formadas por carbonato de calcio, depositadas en aguas profundas. Típicamente se presenta en forma de nódulos entre estratos de caliza. Fuente: Wikipedia
  13. 13. ¿Qué es Silex? Es un microframework de PHP. Construido a hombros de Symfony2 y Pimple e inspirado en Sinatra (ruby). http://silex.sensiolabs.org/
  14. 14. ¿Y por qué es un microframework? ● Conciso: API fácil y divertida de manejar ● Extensible: A partir del micro service-container Pimple es sencillo incluir librerías de terceros ● Testable: Silex utiliza el componente HttpKernel de Symfony2 lo que permite abstraer petición y respuesta, lo que permite testearlo con facilidad
  15. 15. Request Routing Controller Response 1 2 3 4 Request – Reponse
  16. 16. Hola Mundo!
  17. 17. En el navegador localhost:8888/hello/chicken Request 1 Genera una petición GET /hello/chicken
  18. 18. Captura la petición Parámetro name reconocido Routing 2
  19. 19. Controlador Ejecuta la lógica (función anónima) Controller 3
  20. 20. Respuesta Salida por pantalla Response 4
  21. 21. Raíz de la web Autocarga de clases Creación de la aplicación Ejecución de la aplicación Herencia de variable: No es parámetro, es el contenedor de todo PHP 5.3 Algunas cosas más
  22. 22. Instalación www.getcomposer.org
  23. 23. Instalación básica ● Descarga http://silex.sensiolabs.org/download ● Composer → creamos fichero composer.json composer install
  24. 24. Instalación “potencier” ● Descarga https://github.com/silexphp/Silex-Skeleton ● Composer composer create-project fabpot/silex-skeleton myapp ~2.0@dev ● Código más ordenado ● Librerías precargadas ● Código de ejemplo
  25. 25. Skeleton
  26. 26. Skeleton ● config: Aquí estará la configuración específica de cada entorno (desarrollo, producción). ● var/logs: Ficheros de log. ● var/cache: Directorio donde se almacenará la caché de Twig y el Profiler ● src: Código de la aplicación. – app.php → carga de providers – controllers.php → definición de rutas/controladores ● templates: plantillas de Twig. ● vendor: librerías de terceros ● web: directorio accesible vía web, estarán los controladores frontales y los assets. – index.php → producción – index_dev.php → desarrollo
  27. 27. Arrancamos el servidor ● Composer (definido en composer.json) composer run ● Servidor nativo de PHP 5.4 php -S localhost:8888 -t web web/index_dev.php php -S localhost:8888 -t web web/index.php ● Servidor Apache configurado
  28. 28. ¿Cuándo lo uso?
  29. 29. Lo bueno ● En pocos minutos tienes resultados ● Es fácil hacerlo crecer ● Ordenado, sino se hace muy grande ● Toda la potencia de symfony ● Se pueden ejecutar tests ● Estructura flexible ● Bien documentado
  30. 30. Lo malo ● Si crece mucho puedes caer en el caos ● Pretender llegar al infinito (infinito = symfony) ● No es igual de bueno para proyectos grandes ● Errores por exceso de magia (o por desconocimiento del truco) ● Debes tener clara la estructura de tu código
  31. 31. Caso de estudio ● Primera página de reclamo ● Segunda página con formulario ● Formulario necesita validaciones específicas ● Al enviar el formulario se envía un correo con datos y se guarda en base de datos ● Intregación con TPV Sermepa ● Páginas estáticas de aviso legal, identidad...
  32. 32. Recordemos nuestra app
  33. 33. Modificadores de ruta
  34. 34. Proveedores (Providers)
  35. 35. Inyección de dependencias La inyección de dependencias es un patrón de diseño en el que las dependencias se pasan directamente a los servicios, en vez de crearlas dentro de los propios servicios o en vez de utilizar variables globales. Si se utiliza bien, la inyección de dependencias hace que el código resultante esté más desacoplado, sea más flexible y fácil de testear y se pueda reutilizar más fácilmente.
  36. 36. Pimple
  37. 37. ¡No solo eso! También es un contenedor de servicios
  38. 38. $app ● $app es un contenedor de servicios extensión de Pimple ● ● ● Asignar un “closure” a una clave del array del contenedor ● “share” indica que es compartido para toda la aplicación (puede usarse una y otra vez)
  39. 39. Twig: plantillas #app.php #controllers.php #hello.twig
  40. 40. Form: formularios (I) Servicio de creación de forms Request, para saber lo que enviamos
  41. 41. Form: formularios (II) Si ha sido enviado procesamos Si es válido continuamos Redireccionamos para acabar El controlador devuelve la plantilla con el formulario pintado
  42. 42. Form: formularios (III)
  43. 43. Form: formularios (IV) Validaciones
  44. 44. Doctrine: base de datos
  45. 45. API Y ya está...
  46. 46. Y más ● http_cache, integra el proxy inverso de Symfony2 ● monolog, proporciona un sistema de logs ● security, se encarga de gestionar la autenticación y la autorización de acceso ● serializer, proporciona un servicio para serializar objetos. ● validator, permite validar información ● session, almacenar información de forma persistente entre diferentes peticiones. ● swiftmailer, permite enviar emails utilizando la librería Swift Mailer. ● translation, proporciona un servicio que facilita la traducción de tu aplicación a diferentes idiomas. ● url_generator, proporciona un servicio para poder generar URL a partir del nombre de la ruta.
  47. 47. - ¿Perdona? - Si - ¿No dijiste que íbamos a hacer las cosas bien? - Si, ¿qué pasa? - Cuantas líneas tiene esa cosa todas juntas... - Ehhhh...
  48. 48. Ordena tu código ● Estructura en carpetas: views, form... ● Estructura el enrutado / controlador – Controladores en clases PHP normales – Controladores como ControllerProviders – Providers propios ● Otras ayudas – Configuración en ficheros YAML (rutas, opciones) ● http://librosweb.es/tutorial/como-organizar-bien-un-proyecto-silex/
  49. 49. Controladores en clases
  50. 50. Controladores en clases
  51. 51. ControllerProvider
  52. 52. Tests ● PHPUnit ● WebTestCase para tests funcionales ● Crawler como symfony :) ● http://librosweb.es/libro/silex/capitulo_7.html
  53. 53. Nuestro provider Protegido Parámetro por defecto Crea el servicio y lo registra Configura la aplicación antes de la petición
  54. 54. Nuestro provider Registro en la applicación
  55. 55. Show me the code https://github.com/delineas/IntroSilex
  56. 56. Muchas Gracias @delineas danielprimo.es dani@danielprimo.es

×