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
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
sesión patrocinada por




                               www.laigu.net
                        ...también hacemos webs...




Jornadas Symfony                                     http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
¿Y ESTE... QUIÉN ES?




               Jordi Llonch   email: jordi@laigu.net
                               twitter: jordillonch




Jornadas Symfony                                       http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
¿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
OBJETIVOS




Jornadas Symfony        http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
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
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
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
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
¿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
¿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
¿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
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
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
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
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
¿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
ESTRUCTURA DEL
          PLUGIN
               Clases
               Configuración
               Schemas
               Fixtures
               Modules
               Web assets
               Tasks
               ...

Jornadas Symfony               http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
Jornadas Symfony        http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
Jornadas Symfony        http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
Jornadas Symfony        http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
Jornadas Symfony        http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
Jornadas Symfony        http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
symfony plugin:publish-assets




Jornadas Symfony                                        http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
CREAR UN PLUGIN




Jornadas Symfony          http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
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
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
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
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
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
AÑADIR
        FUNCIONALIDAD

               Programad la funcionalidad
               utilizando:

                        modules

                        classes

                        ...



Jornadas Symfony                            http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
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
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
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
AÑADIR ARCHIVO
        LICENSE

                        Escoge una licencia:

                          MIT

                          BSD

                          LGPL

                          PHP License



Jornadas Symfony                               http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
AÑADIR ARCHIVO
        LICENSE

                        Escoge una licencia:

                          MIT

                          BSD

                          LGPL

                          PHP License



Jornadas Symfony                               http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
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
<?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
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
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
EJEMPLOS DE PLUGINS


               laiguAdminThemePlugin




               laiguExtGridPlugin




Jornadas Symfony                       http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
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
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

Symfony plugins - decharlas

  • 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 LARUEDA PLUGINS Jordi Llonch <[email protected]> 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ÉNES? Jordi Llonch email: [email protected] twitter: jordillonch Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010
  • 5.
    ¿A QUIÉN VADIRIGIDO? 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 UNPLUGIN? 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 DIADE 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 SERUN 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 JornadasSymfony 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>[email protected]</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: [email protected] twitter: jordillonch Por cierto, buscamos programadores para incorporar a nuestro equipo... Jornadas Symfony http://decharlas.uji.es/symfony Tuesday, July 6, 2010