symfony plugins - decharlas

44
organizan patrocinan colaboran Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony Tuesday, July 6, 2010

Upload: decharlas

Post on 18-Jan-2015

1.741 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Symfony plugins - decharlas

organizan

patrocinan colaboran

Jornadas Symfony 5 y 6 de julio 2010Universitat Jaume I, Castellón

http://decharlas.uji.es/symfony

Tuesday, July 6, 2010

Page 2: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

NO REINVENTES LA RUEDA PLUGINS

Jordi Llonch <[email protected]>

Jornadas Symfony 5 y 6 de julio 2010Universitat Jaume I, Castellón

http://decharlas.uji.es/symfonyTuesday, July 6, 2010

Page 3: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

sesión patrocinada por

www.laigu.net

...también hacemos webs...

Tuesday, July 6, 2010

Page 4: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

¿Y ESTE... QUIÉN ES?

Jordi Llonch email: [email protected]: jordillonch

Tuesday, July 6, 2010

Page 5: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

¿A QUIÉN VA DIRIGIDO?

Ya conocéis Symfony.

Os preguntáis si vale la pena utilizar Symfony.

Tuesday, July 6, 2010

Page 6: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

OBJETIVOS

Tuesday, July 6, 2010

Page 7: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy?

Usar un plugin

OBJETIVOS

Tuesday, July 6, 2010

Page 8: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy?

Usar un plugin

OBJETIVOS

¿Cómo debe ser un plugin y cómo encaja?

Estructura

Tuesday, July 6, 2010

Page 9: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy?

Usar un plugin

OBJETIVOS

¿Cómo debe ser un plugin y cómo encaja?

Estructura

Crear un plugin

Publicar un plugin

Tuesday, July 6, 2010

Page 10: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy?

Usar un plugin

OBJETIVOS

¿Cómo debe ser un plugin y cómo encaja?

Estructura

Crear un plugin

Publicar un plugin

Ejemplos de plugins

Tuesday, July 6, 2010

Page 11: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

¿QUÉ ES UN PLUGIN?

Pieza de código que añade funcionalidades al proyecto

Una forma de empaquetar esas piezas

Añadir funcionalidad desde:

1 libreríamini proyecto

(modelo, acciones, plantillas, js, css...)

Tuesday, July 6, 2010

Page 12: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

¿PORQUÉ PLUGINS?

Reutilizar y compartir código común:

Entre diversos proyectos

O mejor... para la comunidad (aprendiendo/compartiendo)

Tuesday, July 6, 2010

Page 13: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

¿PORQUÉ PLUGINS?

Reutilizar y compartir código común:

Entre diversos proyectos

O mejor... para la comunidad (aprendiendo/compartiendo)

REUTILIZACIÓN

Tuesday, July 6, 2010

Page 14: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

PLUGINS A DIA DE HOY

2 de julio del 2010:

1055 plugins

2808 releases

442 developers

10809 users

Tuesday, July 6, 2010

Page 15: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

PLUGINS MÁS POPULARES

1. sfGuardPlugin2. sfDoctrineGuardPlugin3. sfFormExtraPlugin4. sfThumbnailPlugin5. sfFeed2Plugin6. sfJqueryReloadedPlugin7. sfDoctrinePlugin8. sfImageTransformPlugin9. sfWebBrowserPlugin10. sfAdminDashPlugin11. ...

Tuesday, July 6, 2010

Page 16: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

Leer el README

Instalarlo:

PEAR

Descargar el tar.gz; Copiar a /plugins/

svn:external/git

USAR UN PLUGIN

./symfony plugin:install laiguSimplePlugin --stability=beta

Tuesday, July 6, 2010

Page 17: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

USAR UN PLUGIN

class ProjectConfiguration extends sfProjectConfiguration { public function setup() { $this->enablePlugins('sfDoctrinePlugin', 'laiguSimplePlugin'); } }

all: .settings: enabled_modules: [default, sfGuardAuth, laiguSimple]

Actívalo en tu proyecto: /config/ProjectConfiguration.class.php:

Activa los modules en tu aplicación (si es necesario):/apps/frontend/config/settings.yml

Tuesday, July 6, 2010

Page 18: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

Independiente de la aplicación o proyectoPersonalizable

¿CÓMO DEBE SER UN PLUGIN Y CÓMO ENCAJA?

Symfony

database

PHP

ORMplugin

aplicación

plugin

pluginpersonalización personalización

personalización

Tuesday, July 6, 2010

Page 19: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

ESTRUCTURA DEL PLUGIN

Clases

Configuración

Schemas

Fixtures

Modules

Web assets

Tasks

...

Tuesday, July 6, 2010

Page 20: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfonyTuesday, July 6, 2010

Page 21: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfonyTuesday, July 6, 2010

Page 22: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfonyTuesday, July 6, 2010

Page 23: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfonyTuesday, July 6, 2010

Page 24: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfonyTuesday, July 6, 2010

Page 25: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

symfony plugin:publish-assets

Tuesday, July 6, 2010

Page 26: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

CREAR UN PLUGIN

Tuesday, July 6, 2010

Page 27: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

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

Tuesday, July 6, 2010

Page 28: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

AÑADIR CONFIGURACIÓN

Escribe tu configuración por defecto:

plugins/laiguSimplePlugin/config/app.yml

// cambia el valor por defecto de 'foo' en la aplicación app.ymlall: laigu_simple_plugin: foo: barbar

Personaliza para cada aplicación:

apps/<APP>/config/app.yml

all: laigu_simple_plugin: foo: bar

// ejemplo código en plug-in$foo = sfConfig::get('app_laigu_simple_plugin_foo');

Tuesday, July 6, 2010

Page 29: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

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.ymlall: .settings: enabled_modules: [default, sfGuardAuth, laiguSimple]

Tuesday, July 6, 2010

Page 30: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

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

Tuesday, July 6, 2010

Page 31: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

AÑADIR CLASSES DE MODELO

plugins/laiguSimplePlugin/config/schema.ymlArchivo habitual de esquemaSe pueden mezclar:#schema original, en plugins/laiguSimplePlugin/config/schema.ymlArticulo: columns: nombre: string(50)

#schema proyecto, en config/schema.ymlArticulo: columns: titulo: string(50)

#resultado, mezclado interno y uso para generación de modelo y sqlArticulo: columns: nombre: string(50) titulo: string(50)

+

=

Tuesday, July 6, 2010

Page 32: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

AÑADIR FUNCIONALIDAD

Programad la funcionalidad utilizando:

modules

classes

...

Tuesday, July 6, 2010

Page 33: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

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

PUBLÍCALO

Tuesday, July 6, 2010

Page 34: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

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

PUBLÍCALO

Fama

Tuesday, July 6, 2010

Page 35: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

AÑADIR ARCHIVO README

Estructura:

Instalación

Configuración

Personalización

Limitaciones conocidas

TODO

Lista de cambios

Track Wiki Formathttp://www.symfony-project.org/plugins/markdown_dingus

Tuesday, July 6, 2010

Page 36: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

AÑADIR ARCHIVO LICENSE

Escoge una licencia:

MIT

BSD

LGPL

PHP License

Tuesday, July 6, 2010

Page 37: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

AÑADIR ARCHIVO LICENSE

Escoge una licencia:

MIT

BSD

LGPL

PHP License

Tuesday, July 6, 2010

Page 38: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

EMPAQUETAR UN PLUGIN

Los plugins Symfony son paquetes PEARAñadir package.xml

NameDescriptionSummaryAutor/esVersiónEstabilidadDependencias

Tuesday, July 6, 2010

Page 39: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

<?xml version="1.0" encoding="UTF-8"?><package packagerversion="1.8.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd"> <name>laiguSimplePlugin</name> <channel>pear.symfony-project.com</channel> <summary>Simple plugin example.</summary> <description>Simple plugin example.</description> <lead> <name>Jordi Llonch</name> <user>jllonch</user> <email>[email protected]</email> <active>yes</active> </lead> <date>2010-07-06</date> <time>10:30:00</time> <version> <release>0.0.1</release> <api>0.0.1</api> </version> <stability> <release>beta</release> <api>beta</api> </stability> <license uri="http://www.opensource.org/licenses/mit-license.html">MIT</license> <notes>Added change max rows per page. </notes> <contents> <dir baseinstalldir="." name="/"> <file baseinstalldir="." md5sum="1d3a58638917a2095b6d5d3429de926e" name="config/app.yml" role="data" /> ....... <file baseinstalldir="." md5sum="516839143e185f2b278b01f5a43af076" name="LICENSE" role="data" />

<file baseinstalldir="." md5sum="e0bed858944fdb4261070561572b3ae2" name="README" role="data" /> </dir> </contents> <dependencies> <required> <php> <min>5.1.0</min> </php> <pearinstaller> <min>1.4.1</min> </pearinstaller> <package> <name>symfony</name> <channel>pear.symfony-project.com</channel> <min>1.2.0</min> <max>1.5.0</max> <exclude>1.5.0</exclude> </package> </required> </dependencies> <phprelease /> <changelog> <release> <version> <release>0.1.0</release> <api>0.1.0</api> </version> <stability> <release>beta</release> <api>beta</api> </stability> <date>2010-07-06</date> <license uri="http://www.opensource.org/licenses/mit-license.html">MIT</license> <notes>initial release</notes> </release> </changelog></package>

Tuesday, July 6, 2010

Page 40: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

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”

CREAR UN PACKAGE.XML

Tuesday, July 6, 2010

Page 41: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

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...

Tuesday, July 6, 2010

Page 42: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

EJEMPLOS DE PLUGINS

laiguAdminThemePlugin

laiguExtGridPlugin

Tuesday, July 6, 2010

Page 43: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

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

Tuesday, July 6, 2010

Page 44: Symfony plugins - decharlas

Jornadas Symfony http://decharlas.uji.es/symfony

GRACIAS

Jordi Llonch email: [email protected]: jordillonch

Por cierto, buscamos programadores para incorporar a nuestro equipo...

Tuesday, July 6, 2010