Symfony plugins - decharlas

  • 1,720 views
Uploaded on

Charla sobre plugins a cargo de Jodi Llonch en las primeras jornadas symfony - decharlas.com

Charla sobre plugins a cargo de Jodi Llonch en las primeras jornadas symfony - decharlas.com

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,720
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
57
Comments
0
Likes
0

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. Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony organizan patrocinan colaboran Tuesday, July 6, 2010
  • 2. NO REINVENTES LA RUEDA PLUGINS Jordi Llonch <jordi@laigu.net> Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 3. sesión patrocinada por www.laigu.net ...también hacemos webs... Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 4. ¿Y ESTE... QUIÉN ES? Jordi Llonch email: jordi@laigu.net twitter: jordillonch Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 5. ¿A QUIÉN VA DIRIGIDO? Ya conocéis Symfony. Os preguntáis si vale la pena utilizar Symfony. Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 6. OBJETIVOS Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 7. OBJETIVOS ¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy? Usar un plugin Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 8. OBJETIVOS ¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy? Usar un plugin ¿Cómo debe ser un plugin y cómo encaja? Estructura Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 9. OBJETIVOS ¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy? Usar un plugin ¿Cómo debe ser un plugin y cómo encaja? Estructura Crear un plugin Publicar un plugin Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 10. OBJETIVOS ¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy? Usar un plugin ¿Cómo debe ser un plugin y cómo encaja? Estructura Crear un plugin Publicar un plugin Ejemplos de plugins Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 11. ¿QUÉ ES UN PLUGIN? Pieza de código que añade funcionalidades al proyecto Una forma de empaquetar esas piezas Añadir funcionalidad desde: mini proyecto 1 librería (modelo, acciones, plantillas, js, css...) Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 12. ¿PORQUÉ PLUGINS? Reutilizar y compartir código común: Entre diversos proyectos O mejor... para la comunidad (aprendiendo/ compartiendo) Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 13. ¿PORQUÉ PLUGINS? REUTILIZACIÓN Reutilizar y compartir código común: Entre diversos proyectos O mejor... para la comunidad (aprendiendo/ compartiendo) Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 14. PLUGINS A DIA DE HOY 2 de julio del 2010: 1055 plugins 2808 releases 442 developers 10809 users Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 15. PLUGINS MÁS POPULARES 1. sfGuardPlugin 2. sfDoctrineGuardPlugin 3. sfFormExtraPlugin 4. sfThumbnailPlugin 5. sfFeed2Plugin 6. sfJqueryReloadedPlugin 7. sfDoctrinePlugin 8. sfImageTransformPlugin 9. sfWebBrowserPlugin 10. sfAdminDashPlugin 11. ... Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 16. USAR UN PLUGIN Leer el README Instalarlo: PEAR ./symfony plugin:install laiguSimplePlugin --stability=beta Descargar el tar.gz; Copiar a /plugins/ svn:external/git Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 17. USAR UN PLUGIN Actívalo en tu proyecto: /config/ProjectConfiguration.class.php: class ProjectConfiguration extends sfProjectConfiguration { public function setup() { $this->enablePlugins('sfDoctrinePlugin', 'laiguSimplePlugin'); } } Activa los modules en tu aplicación (si es necesario): /apps/frontend/config/settings.yml all: .settings: enabled_modules: [default, sfGuardAuth, laiguSimple] Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 18. ¿CÓMO DEBE SER UN PLUGIN Y CÓMO ENCAJA? Independiente de la aplicación o proyecto Personalizable aplicación personalización personalización plugin personalización Symfony plugin plugin ORM PHP database Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 19. ESTRUCTURA DEL PLUGIN Clases Configuración Schemas Fixtures Modules Web assets Tasks ... Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 20. Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 21. Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 22. Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 23. Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 24. Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 25. symfony plugin:publish-assets Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 26. CREAR UN PLUGIN Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 27. CREAR UN PLUGIN Escoger un nombre: Prefijo (sf sólo para plugins oficiales) Nombre principal Añadir como sufijo “Plugin” Ejemplo: laiguSimplePlugin Crear carpeta plugins/laiguSimplePlugin Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 28. AÑADIR CONFIGURACIÓN Escribe tu configuración por defecto: plugins/laiguSimplePlugin/config/app.yml all: laigu_simple_plugin: foo: bar // ejemplo código en plug-in $foo = sfConfig::get('app_laigu_simple_plugin_foo'); Personaliza para cada aplicación: apps/<APP>/config/app.yml // cambia el valor por defecto de 'foo' en la aplicación app.yml all: laigu_simple_plugin: foo: barbar Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 29. AÑADIR MODULES La misma estructura que un módulo “normal” Podéis mover módulos desde vuestra aplicación a la carpeta modules/ del plugin Recordad habilitar los módulos en el settings.yml all: .settings: enabled_modules: [default, sfGuardAuth, laiguSimple] Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 30. AÑADIR WEB ASSETS Añadir web assets en la carpeta: plugins/laiguSimplePlugin/web/ plugins/laiguSimplePlugin/web/js plugins/laiguSimplePlugin/web/css plugins/laiguSimplePlugin/web/images symfony plugins:publish-assets Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 31. AÑADIR CLASSES DE MODELO plugins/laiguSimplePlugin/config/schema.yml Archivo habitual de esquema Se pueden mezclar: #schema original, en plugins/laiguSimplePlugin/config/schema.yml Articulo: columns: nombre: string(50) + #schema proyecto, en config/schema.yml Articulo: columns: titulo: string(50) = #resultado, mezclado interno y uso para generación de modelo y sql Articulo: columns: nombre: string(50) titulo: string(50) Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 32. AÑADIR FUNCIONALIDAD Programad la funcionalidad utilizando: modules classes ... Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 33. PUBLÍCALO Para uso privado Utiliza un svn:external para incluirlo en tus proyectos Para la comunidad La comunidad os ayudará a encontrar y solucionar bugs y perfeccionar vuestro plugin Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 34. PUBLÍCALO Para uso privado Utiliza un svn:external para incluirlo en tus proyectos Para la comunidad La comunidad os ayudará a encontrar y solucionar bugs y perfeccionar vuestro plugin Fama Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 35. AÑADIR ARCHIVO README Estructura: Instalación Configuración Personalización Limitaciones conocidas TODO Lista de cambios Track Wiki Format http://www.symfony-project.org/plugins/markdown_dingus Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 36. AÑADIR ARCHIVO LICENSE Escoge una licencia: MIT BSD LGPL PHP License Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 37. AÑADIR ARCHIVO LICENSE Escoge una licencia: MIT BSD LGPL PHP License Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 38. EMPAQUETAR UN PLUGIN Los plugins Symfony son paquetes PEAR Añadir package.xml Name Description Summary Autor/es Versión Estabilidad Dependencias Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 39. <?xml version="1.0" encoding="UTF-8"?> <file baseinstalldir="." <package packagerversion="1.8.0" version="2.0" xmlns="http:// md5sum="e0bed858944fdb4261070561572b3ae2" name="README" pear.php.net/dtd/package-2.0" xmlns:tasks="http:// role="data" /> pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/ </dir> 2001/XMLSchema-instance" xsi:schemaLocation="http:// </contents> pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/ <dependencies> tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 <required> http://pear.php.net/dtd/package-2.0.xsd"> <php> <name>laiguSimplePlugin</name> <min>5.1.0</min> <channel>pear.symfony-project.com</channel> </php> <summary>Simple plugin example.</summary> <pearinstaller> <description>Simple plugin example.</description> <min>1.4.1</min> <lead> </pearinstaller> <name>Jordi Llonch</name> <package> <user>jllonch</user> <name>symfony</name> <email>jordi@laigu.net</email> <channel>pear.symfony-project.com</channel> <active>yes</active> <min>1.2.0</min> </lead> <max>1.5.0</max> <date>2010-07-06</date> <exclude>1.5.0</exclude> <time>10:30:00</time> </package> <version> </required> <release>0.0.1</release> </dependencies> <api>0.0.1</api> <phprelease /> </version> <changelog> <stability> <release> <release>beta</release> <version> <api>beta</api> <release>0.1.0</release> </stability> <api>0.1.0</api> <license uri="http://www.opensource.org/licenses/mit- </version> license.html">MIT</license> <stability> <notes> <release>beta</release> Added change max rows per page. <api>beta</api> </notes> </stability> <contents> <date>2010-07-06</date> <dir baseinstalldir="." name="/"> <license uri="http://www.opensource.org/licenses/mit- <file baseinstalldir="." license.html">MIT</license> md5sum="1d3a58638917a2095b6d5d3429de926e" name="config/ <notes>initial release</notes> app.yml" role="data" /> </release> ....... </changelog> <file baseinstalldir="." </package> md5sum="516839143e185f2b278b01f5a43af076" name="LICENSE" role="data" /> Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 40. CREAR UN PACKAGE.XML PEAR_Package File Manager http://pear.php.net/package/PEAR_PackageFileManager_Cli Cuidado, en el archivo package.xml generado por esta utilidad, se debe sustituir el valor del atributo rol “php” por “data” Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 41. SYMFONY-PROJECT.COM Crea una cuenta http://www.symfony-project.org/user/new Crea el plugin http://www.symfony-project.org/plugins/new Sube el paquete PEAR que has creado Publicítalo mailing-list, forums, twitter... Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 42. EJEMPLOS DE PLUGINS laiguAdminThemePlugin laiguExtGridPlugin Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 43. CONCLUSIONES Una gran forma de extender funcionalidades en el framework Una nueva forma de encapsular nuestro código Muchos plugins disponibles No todos son útiles y de calidad Muchas opciones para la personalización Si el plugin está desarrollado correctamente Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 44. GRACIAS Jordi Llonch email: jordi@laigu.net twitter: jordillonch Por cierto, buscamos programadores para incorporar a nuestro equipo... Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010