Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón
Upcoming SlideShare
Loading in...5
×
 

Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón

on

  • 5,246 views

 

Statistics

Views

Total Views
5,246
Views on SlideShare
3,367
Embed Views
1,879

Actions

Likes
1
Downloads
169
Comments
0

9 Embeds 1,879

http://www.symfony.es 1863
http://symfony.es 4
http://translate.googleusercontent.com 3
http://www.linkedin.com 3
http://webcache.googleusercontent.com 2
http://static.slidesharecdn.com 1
http://symfony.lab216.com 1
http://www.slideshare.net 1
https://www.linkedin.com 1
More...

Accessibility

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • <br />
  • <br /> <br />
  • Hace 3 a&#xF1;os planteamos una nueva forma de crecer como empresa basada en las buenas pr&#xE1;cticas de programaci&#xF3;n. ESTANDARIZAR. <br /> Opciones: Zend, CakePHP i Sf. <br /> La elecci&#xF3;n fue escoger un framework full stack. <br /> Tengo experiencia en Sf desde la versi&#xF3;n 1.0 <br />
  • Preguntar cuantos conocen/no conocen sf? <br /> Los q conocen sf, entraremos en detalles y espero que al acabar la charla no s&#xF3;lo pens&#xE9;is en los plugins como algo para consumir, tambi&#xE9;n los creeis aunque s&#xF3;lo sea para vuestro uso privado. <br /> Los q no conocen sf, espero que simplemente entend&#xE1;is los conceptos y teng&#xE1;is la percepci&#xF3;n que los plugins van a ser una herramienta m&#xE1;s para conseguir ser m&#xE1;s productivos con un potencial muy atractivo. <br /> <br />
  • 4 bloques: lo b&#xE1;sico, internals, creci&#xF3;n, ejemplos pr&#xE1;cticos <br /> <br />
  • 4 bloques: lo b&#xE1;sico, internals, creci&#xF3;n, ejemplos pr&#xE1;cticos <br /> <br />
  • 4 bloques: lo b&#xE1;sico, internals, creci&#xF3;n, ejemplos pr&#xE1;cticos <br /> <br />
  • 4 bloques: lo b&#xE1;sico, internals, creci&#xF3;n, ejemplos pr&#xE1;cticos <br /> <br />
  • Muchas veces las funcionalidades que queremos a&#xF1;adir al proyecto contienen diversas partes. <br /> Lo podemos empaquetar <br /> Las funcionalidades pueden ser 1 simple liber&#xED;a hasta un completo mini proyecto <br /> Simple librer&#xED;as: escriba logs en redis, memcache... <br /> Mini proyecto: gesti&#xF3;n usuarios-credenciales, login, recordar password... <br />
  • En conclusi&#xF3;n, PLUGINS = REUTILIZACI&#xD3;N <br />
  • Mucha diversidad i actividad... tal vez demasiada, s&#xED;, tal vez... <br />
  • Estaremos de acuerdo que los 3 primeros son los plugins m&#xE1;s guais... bueno, son los m&#xE1;s usados. El resto es discutible. <br /> Tener en cuenta cuales son oficiales. <br />
  • <br />
  • <br />
  • <br />
  • Es lo que se encontrar&#xED;a en un proyecto en la carpeta &#x201C;plugins&#x201D; <br /> Un plugin puede contener, clases, configuraciones, schemas....... <br /> <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • Todo claro? <br /> Ahora vamos a repasar los pasos para la creaci&#xF3;n de un plugin <br />
  • Importante el sufijo &#x201C;Plugin&#x201D; <br />
  • Paso opcional pero aconsejable <br /> Sobreescribe la configuraci&#xF3;n por defecto en apps//config/app.yml <br /> <br />
  • <br />
  • Paso opcional <br />
  • Paso opcional <br />
  • lo m&#xE1;s importante, no? <br /> Hasta aqu&#xED; lo b&#xE1;sico para crear nuestro plugin personal <br />
  • <br />
  • Copiad un readme de alg&#xFA;n otro plugin y lo adaptais al vuestro <br />
  • <br />
  • <br />
  • <br />
  • Si hay tiempo, mostrar como se crea el package.xml con pfm <br />
  • Si hay tiempo mostrar el backoffice de sf plugins <br />
  • Mostrar algunos plugins funcionando y el c&#xF3;digo que lo ejecuta: <br /> laiguAdminThemePlugin: Q hace, como funciona, c&#xF3;digo... <br /> laiguExtGridPlugin <br />
  • <br />
  • <br />

Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón Presentation Transcript

  • Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony organizan patrocinan colaboran
  • 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
  • sesión patrocinada por www.laigu.net ...también hacemos webs... Jornadas Symfony http://decharlas.uji.es/symfony
  • ¿Y ESTE... QUIÉN ES? Jordi Llonch email: jordi@laigu.net twitter: jordillonch 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. Jornadas Symfony http://decharlas.uji.es/symfony
  • OBJETIVOS Jornadas Symfony http://decharlas.uji.es/symfony
  • 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
  • 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
  • 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
  • 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
  • ¿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
  • ¿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
  • ¿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
  • 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
  • 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
  • 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
  • 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
  • ¿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
  • ESTRUCTURA DEL PLUGIN Clases Configuración Schemas Fixtures Modules Web assets Tasks ... Jornadas Symfony http://decharlas.uji.es/symfony
  • Jornadas Symfony http://decharlas.uji.es/symfony
  • Jornadas Symfony http://decharlas.uji.es/symfony
  • Jornadas Symfony http://decharlas.uji.es/symfony
  • Jornadas Symfony http://decharlas.uji.es/symfony
  • Jornadas Symfony http://decharlas.uji.es/symfony
  • symfony plugin:publish-assets Jornadas Symfony http://decharlas.uji.es/symfony
  • CREAR UN PLUGIN 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 Jornadas Symfony http://decharlas.uji.es/symfony
  • 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
  • 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
  • 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
  • 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
  • AÑADIR FUNCIONALIDAD Programad la funcionalidad utilizando: modules classes ... Jornadas Symfony http://decharlas.uji.es/symfony
  • 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
  • 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
  • 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
  • AÑADIR ARCHIVO LICENSE Escoge una licencia: MIT BSD LGPL PHP License Jornadas Symfony http://decharlas.uji.es/symfony
  • AÑADIR ARCHIVO LICENSE Escoge una licencia: MIT BSD LGPL PHP License Jornadas Symfony http://decharlas.uji.es/symfony
  • 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
  • <?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
  • 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
  • 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
  • EJEMPLOS DE PLUGINS laiguAdminThemePlugin laiguExtGridPlugin 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 Jornadas Symfony http://decharlas.uji.es/symfony
  • 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