desymfony 2012 - el entorno de symfony2

111
Friday, June 15, 12

Upload: albert-jessurum

Post on 06-Jul-2015

3.906 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: deSymfony 2012 - El entorno de Symfony2

Friday, June 15, 12

Page 2: deSymfony 2012 - El entorno de Symfony2

Friday, June 15, 12

Page 3: deSymfony 2012 - El entorno de Symfony2

ALBERT JESSURUM

Friday, June 15, 12

Page 4: deSymfony 2012 - El entorno de Symfony2

ALBERT JESSURUM

•Desarrollador en Acilia

Friday, June 15, 12

Page 5: deSymfony 2012 - El entorno de Symfony2

ALBERT JESSURUM

•Desarrollador en Acilia

• Venezolano

Friday, June 15, 12

Page 6: deSymfony 2012 - El entorno de Symfony2

ALBERT JESSURUM

•Desarrollador en Acilia

• Venezolano

•@ajessu

Friday, June 15, 12

Page 7: deSymfony 2012 - El entorno de Symfony2

ALBERT JESSURUM

•Desarrollador en Acilia

• Venezolano

•@ajessu

• http://github.com/ajessu

Friday, June 15, 12

Page 8: deSymfony 2012 - El entorno de Symfony2

ALBERT JESSURUM

•Desarrollador en Acilia

• Venezolano

•@ajessu

• http://github.com/ajessu

• Symfony Fan

Friday, June 15, 12

Page 9: deSymfony 2012 - El entorno de Symfony2

ALBERT JESSURUM

•Desarrollador en Acilia

• Venezolano

•@ajessu

• http://github.com/ajessu

• Symfony Fan

Friday, June 15, 12

Page 10: deSymfony 2012 - El entorno de Symfony2

PHP ESTA CAMBIANDO

Friday, June 15, 12

Page 11: deSymfony 2012 - El entorno de Symfony2

UN POCO DE HISTORIA

Friday, June 15, 12

Page 12: deSymfony 2012 - El entorno de Symfony2

PHP4 Y PRINCIPIOS DE PHP5

Friday, June 15, 12

Page 13: deSymfony 2012 - El entorno de Symfony2

Friday, June 15, 12

Page 14: deSymfony 2012 - El entorno de Symfony2

• “Framework” no era la palabra mas bienvenida

Friday, June 15, 12

Page 15: deSymfony 2012 - El entorno de Symfony2

• “Framework” no era la palabra mas bienvenida

• “CMS” no tan mala

Friday, June 15, 12

Page 16: deSymfony 2012 - El entorno de Symfony2

Y LLEGO RAILS

Friday, June 15, 12

Page 17: deSymfony 2012 - El entorno de Symfony2

FRAMEWORKS = ¡BIEN!

Friday, June 15, 12

Page 18: deSymfony 2012 - El entorno de Symfony2

Friday, June 15, 12

Page 19: deSymfony 2012 - El entorno de Symfony2

• La palabra “Framework” empezó a ser “aceptada”

Friday, June 15, 12

Page 20: deSymfony 2012 - El entorno de Symfony2

• La palabra “Framework” empezó a ser “aceptada”

• Symfony, Zend, Cake, CodeIgniter

Friday, June 15, 12

Page 21: deSymfony 2012 - El entorno de Symfony2

• La palabra “Framework” empezó a ser “aceptada”

• Symfony, Zend, Cake, CodeIgniter

• Se satisfacen necesidades comunes de usuarios

Friday, June 15, 12

Page 22: deSymfony 2012 - El entorno de Symfony2

• La palabra “Framework” empezó a ser “aceptada”

• Symfony, Zend, Cake, CodeIgniter

• Se satisfacen necesidades comunes de usuarios

•Descargadas como un paquete entero

Friday, June 15, 12

Page 23: deSymfony 2012 - El entorno de Symfony2

FRAMEWORKS = ¿BIEN?

Friday, June 15, 12

Page 24: deSymfony 2012 - El entorno de Symfony2

Friday, June 15, 12

Page 25: deSymfony 2012 - El entorno de Symfony2

• ¿Quieres usar solo una parte de un Framework?

Friday, June 15, 12

Page 26: deSymfony 2012 - El entorno de Symfony2

• ¿Quieres usar solo una parte de un Framework?

• Baja TODO el framework e intenta usar una parte...

Friday, June 15, 12

Page 27: deSymfony 2012 - El entorno de Symfony2

• ¿Quieres usar solo una parte de un Framework?

• Baja TODO el framework e intenta usar una parte...

• Excepto que tiene dependencias

Friday, June 15, 12

Page 28: deSymfony 2012 - El entorno de Symfony2

• ¿Quieres usar solo una parte de un Framework?

• Baja TODO el framework e intenta usar una parte...

• Excepto que tiene dependencias

• Se empieza a ver un cambio de mentalidad sobre frameworks

Friday, June 15, 12

Page 29: deSymfony 2012 - El entorno de Symfony2

FRAMEWORKS RELOADED

Friday, June 15, 12

Page 30: deSymfony 2012 - El entorno de Symfony2

Friday, June 15, 12

Page 31: deSymfony 2012 - El entorno de Symfony2

• Componentes de frameworks mas desacoplados

Friday, June 15, 12

Page 32: deSymfony 2012 - El entorno de Symfony2

• Componentes de frameworks mas desacoplados

• Librerías de único uso externas

Friday, June 15, 12

Page 33: deSymfony 2012 - El entorno de Symfony2

• Componentes de frameworks mas desacoplados

• Librerías de único uso externas

•MicroFrameworks

Friday, June 15, 12

Page 34: deSymfony 2012 - El entorno de Symfony2

• Componentes de frameworks mas desacoplados

• Librerías de único uso externas

•MicroFrameworks

•MicroPHP Manifesto

Friday, June 15, 12

Page 35: deSymfony 2012 - El entorno de Symfony2

¿MICROPHP MANIFESTO?http://microphp.org/

Friday, June 15, 12

Page 36: deSymfony 2012 - El entorno de Symfony2

SOY UN DESARROLLADOR PHP

Friday, June 15, 12

Page 37: deSymfony 2012 - El entorno de Symfony2

•No soy un desarrollador Symfony, ni Zend, ni CakePHP

SOY UN DESARROLLADOR PHP

Friday, June 15, 12

Page 38: deSymfony 2012 - El entorno de Symfony2

•No soy un desarrollador Symfony, ni Zend, ni CakePHP

• PHP ya es suficientemente complicado

SOY UN DESARROLLADOR PHP

Friday, June 15, 12

Page 39: deSymfony 2012 - El entorno de Symfony2

ME GUSTA CONSTRUIR COSAS PEQUEÑAS

Friday, June 15, 12

Page 40: deSymfony 2012 - El entorno de Symfony2

•Me gusta construir cosas pequeñas con propósitos simples

ME GUSTA CONSTRUIR COSAS PEQUEÑAS

Friday, June 15, 12

Page 41: deSymfony 2012 - El entorno de Symfony2

•Me gusta construir cosas pequeñas con propósitos simples

•Me gusta construir cosas que resuelvan problemas

ME GUSTA CONSTRUIR COSAS PEQUEÑAS

Friday, June 15, 12

Page 42: deSymfony 2012 - El entorno de Symfony2

•Me gusta construir cosas pequeñas con propósitos simples

•Me gusta construir cosas que resuelvan problemas

•Me gusta construir cosas pequeñas que trabajen juntas para solucionar problemas mas grandes

ME GUSTA CONSTRUIR COSAS PEQUEÑAS

Friday, June 15, 12

Page 43: deSymfony 2012 - El entorno de Symfony2

Y MAS COSAS SOBRE MENOS CODIGO

Friday, June 15, 12

Page 44: deSymfony 2012 - El entorno de Symfony2

Y MAS COSAS SOBRE MENOS CODIGO

•Quiero escribir menos código, no mas

Friday, June 15, 12

Page 45: deSymfony 2012 - El entorno de Symfony2

Y MAS COSAS SOBRE MENOS CODIGO

•Quiero escribir menos código, no mas

•Quiero código simple y sencillo de leer

Friday, June 15, 12

Page 46: deSymfony 2012 - El entorno de Symfony2

¿Y TODO ESTO QUE TIENE QUE VER CON SYMFONY2?

Friday, June 15, 12

Page 47: deSymfony 2012 - El entorno de Symfony2

COMPONENTES DESACOPLADOS

Friday, June 15, 12

Page 48: deSymfony 2012 - El entorno de Symfony2

COMPONENTES LIBRERÍAS

DESACOPLADAS

Friday, June 15, 12

Page 49: deSymfony 2012 - El entorno de Symfony2

CUMPLEN UNA SOLA FUNCIÓN

Friday, June 15, 12

Page 50: deSymfony 2012 - El entorno de Symfony2

CUMPLEN UNA SOLA FUNCIÓN BIEN

Friday, June 15, 12

Page 51: deSymfony 2012 - El entorno de Symfony2

UNIX PHILOSOPHY

Friday, June 15, 12

Page 52: deSymfony 2012 - El entorno de Symfony2

UNIX PHILOSOPHY“Write programs that do one thing and do it well”

Friday, June 15, 12

Page 53: deSymfony 2012 - El entorno de Symfony2

COMPOSERManejador de dependencias

Friday, June 15, 12

Page 54: deSymfony 2012 - El entorno de Symfony2

SEARCH > php composer.phar search pdf

Friday, June 15, 12

Page 55: deSymfony 2012 - El entorno de Symfony2

PACKAGISTsearch

Friday, June 15, 12

Page 56: deSymfony 2012 - El entorno de Symfony2

{ "require": { "itbz/libmergepdf": "1.0.*" }}

composer.json

Friday, June 15, 12

Page 57: deSymfony 2012 - El entorno de Symfony2

php composer.phar install

Friday, June 15, 12

Page 58: deSymfony 2012 - El entorno de Symfony2

<?php

$m = new \itbz\libmergepdf\Merger();$m->addFromFile('foo.pdf');$m->addFromFile('bar.pdf',

new \itbz\libmergepdf\Pages('1-10'));

file_put_contents('foobar.pdf', $m->merge());

Friday, June 15, 12

Page 59: deSymfony 2012 - El entorno de Symfony2

¿FÁCIL NO?

Friday, June 15, 12

Page 60: deSymfony 2012 - El entorno de Symfony2

LIBRERIAS EN SYMFONY2

Friday, June 15, 12

Page 61: deSymfony 2012 - El entorno de Symfony2

MONOLOG

Friday, June 15, 12

Page 62: deSymfony 2012 - El entorno de Symfony2

{ "require": { "monolog/monolog": "1.*" }}

composer.json

Friday, June 15, 12

Page 63: deSymfony 2012 - El entorno de Symfony2

<?php

use Monolog\Logger;use Monolog\Handler\StreamHandler;

// crear un canal de log$log = new Logger('name');$log->pushHandler(

new StreamHandler('direccion/a/tu.log',Logger::WARNING)

);

// añadir record al log$log->addWarning('Foo');$log->addError('Bar');

Friday, June 15, 12

Page 64: deSymfony 2012 - El entorno de Symfony2

# app/config/config.yml

monolog: handlers: main: type: stream path: /direccion/a/tu.log level: warning

MonologBundle

Friday, June 15, 12

Page 65: deSymfony 2012 - El entorno de Symfony2

ASSETIC

Friday, June 15, 12

Page 66: deSymfony 2012 - El entorno de Symfony2

<?php

$yui = new CssCompressorFilter('/direccion/a/tu/yuicompressor.jar'

);$fm = new FilterManager();$fm->set('yui_css', $yui);

$factory = new AssetFactory('/direccion/al/css');$factory->setAssetManager(new AssetManager());$factory->setFilterManager($fm);

$formula = array( array('overall.css', 'social.css'), array('yui_css'),);$lazyAm = new LazyAssetManager($factory);$lazyAm->setFormula('main', $formula);

Friday, June 15, 12

Page 67: deSymfony 2012 - El entorno de Symfony2

<?php

$writer = new AssetWriter('/direccion/al/directorio/publico'

);$writer->writeManagerAssets($lazyAm);

$css = $lazyAm->get('main')->dump();

Friday, June 15, 12

Page 68: deSymfony 2012 - El entorno de Symfony2

# app/config/config.yml

assetic: debug: %kernel.debug% use_controller: false bundles: [ ] #java: /usr/bin/java filters: cssrewrite: ~ yui_css: jar: %kernel.root_dir%/Resources/java/yuicomp.jar

AsseticBundle

Friday, June 15, 12

Page 69: deSymfony 2012 - El entorno de Symfony2

<link href="{{ asset('css/reset.css') }}" rel="stylesheet" type="text/css" /><link href="{{ asset('css/960.css') }}" rel="stylesheet" type="text/css" /><link href="{{ asset('css/main.css') }}" rel="stylesheet" type="text/css" />

{% stylesheets '@AcmeFooBundle/Resources/public/css/*' filter='yui_css' %} <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />{% endstylesheets %}

Twig Template

Friday, June 15, 12

Page 70: deSymfony 2012 - El entorno de Symfony2

IMAGINELibreria de manipulacion de imagenes para PHP 5.3+

Friday, June 15, 12

Page 71: deSymfony 2012 - El entorno de Symfony2

<?php

$width = //anchura final$height = //altura final$src = imagecreatefrompng('/direccion/a/imagen.png');$dest = imagecreatetruecolor($width, $height);imagealphablending($dest, false);imagesavealpha($dest, true);imagecopyresampled($dest, $src, 0, 0, 0, 0,

$width, $height, imagesx($src), imagesy($src));imagepng($dest,'/direccion/a/redimensionada/image.png');

Redimensionar con GD

Friday, June 15, 12

Page 72: deSymfony 2012 - El entorno de Symfony2

<?php

$width = //anchura final$height = //altura final$image = new Imagick('/direccion/a/imagen.png');$image->adaptiveResizeImage($width, $height);$image->writeImage('/direccion/a/redimensionada/imagen.png');

Redimensionar con ImageMagick

Friday, June 15, 12

Page 73: deSymfony 2012 - El entorno de Symfony2

<?php

$width = //anchura final$height = //altura final$imagine = new Imagine\Gd\Imagine();$imagine->open('/direccion/a/imagen.png') ->resize(new Imagine\Box($width, $height)) ->save('/direccion/a/redimensionada/imagen.png');

Redimensionar con Imagine (GD)

Friday, June 15, 12

Page 74: deSymfony 2012 - El entorno de Symfony2

<?php

$width = //anchura final$height = //altura final$imagine = new Imagine\Imagick\Imagine();$imagine->open('/direccion/a/imagen.png') ->resize(new Imagine\Box($width, $height)) ->save('/direccion/a/redimensionada/imagen.png');

Redimensionar con Imagine (ImageMagick)

Friday, June 15, 12

Page 75: deSymfony 2012 - El entorno de Symfony2

<?php

$imagine = new Imagine\Gd\Imagine();

$mode = Imagine\ImageInterface::THUMBNAIL_OUTBOUND;//o modo$mode = Imagine\ImageInterface::THUMBNAIL_INSET;

$imagine->open('/direccion/a/logo.png') ->thumbnail(new Imagine\Box(100, 100), $mode) ->save('/direccion/a/logo/thumbs/logo.png');

Creación de thumbs

Friday, June 15, 12

Page 76: deSymfony 2012 - El entorno de Symfony2

# app/config/config.yml

liip_imagine: filter_sets: my_thumb: quality: 75 filters: thumbnail: { size: [120, 90], mode: outbound }

LiipImagineBundle

Friday, June 15, 12

Page 77: deSymfony 2012 - El entorno de Symfony2

# app/config/config.yml

liip_imagine: filter_sets: my_thumb: quality: 75 filters: thumbnail: { size: [120, 90], mode: outbound }

LiipImagineBundle

<img  src="{{  '/relative/path/to/image.jpg'  |  imagine_filter('my_thumb')  }}"/>

Friday, June 15, 12

Page 78: deSymfony 2012 - El entorno de Symfony2

Y MUCHAS MAS!

Friday, June 15, 12

Page 79: deSymfony 2012 - El entorno de Symfony2

PIMPLEContenedor de Inyección de dependencias

https://github.com/fabpot/Pimple

Friday, June 15, 12

Page 80: deSymfony 2012 - El entorno de Symfony2

GUZZLE / BUZZClientes HTTP

https://github.com/guzzle/guzzle https://github.com/kriswallsmith/buzz

Comparación entre ambas y otras:http://groups.drupal.org/node/233173

Friday, June 15, 12

Page 81: deSymfony 2012 - El entorno de Symfony2

GOUTTEWeb scrapping

https://github.com/fabpot/Goutte

Friday, June 15, 12

Page 82: deSymfony 2012 - El entorno de Symfony2

GAUFRETTEAbstraccion de sistema de archivos

https://github.com/KnpLabs/Gaufrette

Friday, June 15, 12

Page 83: deSymfony 2012 - El entorno de Symfony2

QUIERO MAS...

Friday, June 15, 12

Page 84: deSymfony 2012 - El entorno de Symfony2

http://microphp.org/code.html

Friday, June 15, 12

Page 85: deSymfony 2012 - El entorno de Symfony2

http://packagist.org/packages/

Friday, June 15, 12

Page 86: deSymfony 2012 - El entorno de Symfony2

http://knpbundles.com/

Friday, June 15, 12

Page 87: deSymfony 2012 - El entorno de Symfony2

PHP NO CAMBIA SOLO

Friday, June 15, 12

Page 88: deSymfony 2012 - El entorno de Symfony2

LO CAMBIAS TU

Friday, June 15, 12

Page 89: deSymfony 2012 - El entorno de Symfony2

¿PHP es feo?

Friday, June 15, 12

Page 90: deSymfony 2012 - El entorno de Symfony2

SI¿PHP es feo?

Friday, June 15, 12

Page 91: deSymfony 2012 - El entorno de Symfony2

¿PHP es inconsistente?

Friday, June 15, 12

Page 92: deSymfony 2012 - El entorno de Symfony2

SI¿PHP es inconsistente?

Friday, June 15, 12

Page 93: deSymfony 2012 - El entorno de Symfony2

¿Funciona?

Friday, June 15, 12

Page 94: deSymfony 2012 - El entorno de Symfony2

SI¿Funciona?

Friday, June 15, 12

Page 95: deSymfony 2012 - El entorno de Symfony2

SI¿Funciona?

y también nos da de comer

Friday, June 15, 12

Page 96: deSymfony 2012 - El entorno de Symfony2

Friday, June 15, 12

Page 97: deSymfony 2012 - El entorno de Symfony2

La proxima vez que tengas una necesidad.

Friday, June 15, 12

Page 98: deSymfony 2012 - El entorno de Symfony2

BUSCA PRIMERO! PUEDE QUE YA ESTE INVENTADOLa proxima vez que tengas una necesidad.

Friday, June 15, 12

Page 99: deSymfony 2012 - El entorno de Symfony2

¿No hace lo que necesitas?

Friday, June 15, 12

Page 100: deSymfony 2012 - El entorno de Symfony2

FORK!¿No hace lo que necesitas?

Friday, June 15, 12

Page 101: deSymfony 2012 - El entorno de Symfony2

¿Mejoraste alguna funcionalidad?

Friday, June 15, 12

Page 102: deSymfony 2012 - El entorno de Symfony2

CONTRIBUYE!¿Mejoraste alguna funcionalidad?

Friday, June 15, 12

Page 103: deSymfony 2012 - El entorno de Symfony2

¿Intentaste hacer algo, y estuviste medio día pegandote con ello y por fin has dado con la solución?

Friday, June 15, 12

Page 104: deSymfony 2012 - El entorno de Symfony2

DOCUMENTA!¿Intentaste hacer algo, y estuviste medio día pegandote con ello

y por fin has dado con la solución?

Friday, June 15, 12

Page 105: deSymfony 2012 - El entorno de Symfony2

PHP no mejora solo

Friday, June 15, 12

Page 106: deSymfony 2012 - El entorno de Symfony2

LO MEJORAS TUPHP no mejora solo

Friday, June 15, 12

Page 107: deSymfony 2012 - El entorno de Symfony2

PHP ES UNA COMUNIDAD Y DEPENDE DE TODOS

Friday, June 15, 12

Page 108: deSymfony 2012 - El entorno de Symfony2

ES FÁCILCONTRIBUYE AL ECOSISTEMA

Friday, June 15, 12

Page 109: deSymfony 2012 - El entorno de Symfony2

¿PREGUNTAS?

Friday, June 15, 12

Page 110: deSymfony 2012 - El entorno de Symfony2

•Albert Jessurum

•http://github.com/ajessu

•@ajessu

•https://connect.sensiolabs.com/profile/ajessu

Friday, June 15, 12