silex, desarrollo web ágil y profesional con php

150
JAVIER EGUILUZ BILBOSTACK 26 ENERO 2013 Silex desarrollo web ágil y profesional con PHP

Upload: javier-eguiluz

Post on 15-Jan-2015

13.326 views

Category:

Technology


4 download

DESCRIPTION

Silex es el microframework de moda en el mundo PHP. Silex te permite desarrollar aplicaciones web profesionales con una agilidad sin precedentes. Su aprendizaje es tan rápido y sencillo que podrás dominarlo en menos de una hora.

TRANSCRIPT

Page 1: Silex, desarrollo web ágil y profesional con PHP

JAVIER EGUILUZBILBOSTACK26 ENERO 2013

Silexdesarrollo web ágil y profesional con PHP

Page 2: Silex, desarrollo web ágil y profesional con PHP

Gracias a la organización.

Asier Fran Ibon Vicenç

Page 3: Silex, desarrollo web ágil y profesional con PHP

Agenda1. Introducción

2. Programando aplicaciones

3. DEMO

4. Buenas prácticas

5. Puntos débiles

Page 4: Silex, desarrollo web ágil y profesional con PHP

Introducción

Page 5: Silex, desarrollo web ágil y profesional con PHP

¿Por qué?

Page 6: Silex, desarrollo web ágil y profesional con PHP

En el mundo de los negocios...

1.Rápido

2.Barato

3.Bueno

Page 7: Silex, desarrollo web ágil y profesional con PHP

En el mundo de los negocios...

1.Rápido

2.Barato

3.Bueno

ELIGE DOS

Page 8: Silex, desarrollo web ágil y profesional con PHP

En el mundo de la programación...

1.Bien hecho

2.Terminado a tiempo

3.Barato

Page 9: Silex, desarrollo web ágil y profesional con PHP

En el mundo de la programación...

1.Bien hecho

2.Terminado a tiempo

3.Barato

ELIGE UNA

Page 10: Silex, desarrollo web ágil y profesional con PHP

En el mundo de la programación...

1.Bien hecho

2.Terminado a tiempo

3.Barato✔

Con Silex puedes tenerlo todo

Page 11: Silex, desarrollo web ágil y profesional con PHP

¡quiero hacerlo bien!¡no tengo

tiempo!

Page 12: Silex, desarrollo web ágil y profesional con PHP

¿Qué esSilex?

Page 13: Silex, desarrollo web ágil y profesional con PHP

Foto: Wikipedia

Page 14: Silex, desarrollo web ágil y profesional con PHP

Foto: WikipediaSojourner (2007)

Curiosity (2012)

Page 15: Silex, desarrollo web ágil y profesional con PHP

Sojourner (2007)

Curiosity(2012)

Masa 11 kg 900 kg

Coste ($) 150 M 1.800 M

Memoria RAM 64 KB 256 MB

CPU 2 MHz 200 MHz

Page 16: Silex, desarrollo web ágil y profesional con PHP

Es importante tener en cuenta que...

• El grande jamás podrá ser tan ágil como el pequeño.

• El pequeño jamás podrá competir en potencia y funcionalidad con el grande.

Page 17: Silex, desarrollo web ágil y profesional con PHP

SilexThe PHP micro-frameworkbased on the Symfony2 Components

el logo de Silex

Page 18: Silex, desarrollo web ágil y profesional con PHP

los dos son frameworks y usan los mismos componentes, pero...

Page 19: Silex, desarrollo web ágil y profesional con PHP

...Symfony es un framework muy grande y Silex es un framework muy pequeño

Page 20: Silex, desarrollo web ágil y profesional con PHP

Silex Symfony2

Peso 5 MB 8 MB

Archivos 3.366 6.578

Nivel dificultad

Flexibilidad

Page 21: Silex, desarrollo web ágil y profesional con PHP

Los creadores de Silex

Fabien Potencier@fabpot

Igor Wiedler@igorw

Page 22: Silex, desarrollo web ágil y profesional con PHP

+ fácil- calidad

+ calidad- facil

Page 23: Silex, desarrollo web ágil y profesional con PHP

+ fácil- calidad

+ calidad- facil

Page 24: Silex, desarrollo web ágil y profesional con PHP

Programandoaplicaciones

Page 25: Silex, desarrollo web ágil y profesional con PHP

Funciones anónimasy closures

Page 26: Silex, desarrollo web ágil y profesional con PHP

function suma($a, $b) { return $a + $b;}

Función normal

Page 27: Silex, desarrollo web ágil y profesional con PHP

function ($a, $b) { return $a + $b;}

Función anónima

Page 28: Silex, desarrollo web ágil y profesional con PHP

$app->get('...', function ($a, $b) { return $a + $b;});

Usando una función anónima

Page 29: Silex, desarrollo web ágil y profesional con PHP

$a = 3;function ($b) { return $a + $b;}

Closure

Page 30: Silex, desarrollo web ágil y profesional con PHP

$a = 3;function ($b) { return $a + $b;}

Closure

NO FUNCIONA

Page 31: Silex, desarrollo web ágil y profesional con PHP

$a = 3;function ($b) use ($a) { return $a + $b;}

Closure

Page 32: Silex, desarrollo web ágil y profesional con PHP

$app->get('...', function ($var) use ($app) { // ...});

El código más común de Silex

Page 33: Silex, desarrollo web ágil y profesional con PHP

El primerejemplo

Page 34: Silex, desarrollo web ágil y profesional con PHP

Holamundo.

Page 35: Silex, desarrollo web ágil y profesional con PHP

http://bilbostack.com/hola

Page 36: Silex, desarrollo web ágil y profesional con PHP

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$app->get('/hola', function() { return 'Hola mundo';});

$app->run();

Hola Mundo en Silex

Page 37: Silex, desarrollo web ágil y profesional con PHP

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$app->get('/hola', function() { return 'Hola mundo';});

$app->run();

Cargar clases automáticamente

Page 38: Silex, desarrollo web ágil y profesional con PHP

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$app->get('/hola', function() { return 'Hola mundo';});

$app->run();

Crear la aplicación Silex

Page 39: Silex, desarrollo web ágil y profesional con PHP

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$app->get('/hola', function() { return 'Hola mundo';});

$app->run();

Ejecutar código para una URL

Page 40: Silex, desarrollo web ágil y profesional con PHP

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$app->get('/hola', function() { return 'Hola mundo';});

$app->run();

Arrancar la aplicación

Page 41: Silex, desarrollo web ágil y profesional con PHP

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$app->get('/hola', function() { return 'Hola mundo';});

$app->run();

Hola Mundo en Silex

Page 42: Silex, desarrollo web ágil y profesional con PHP

require 'sinatra'

get '/hola' do "Hola mundo."end

Sinatra / Ruby

Page 43: Silex, desarrollo web ágil y profesional con PHP

var http = require('http');

http.createServer(function (request, response) { response.writeHead( 200, { 'Content-Type': 'text/plain' } ); response.end('Hola mundo\n');}).listen(80);

node.js / JavaScript

Page 44: Silex, desarrollo web ágil y profesional con PHP

Un ejemploreal

Page 45: Silex, desarrollo web ágil y profesional con PHP
Page 46: Silex, desarrollo web ágil y profesional con PHP

github.com/

javiereguiluz/bilbostack

Fork me on GitHub

Page 47: Silex, desarrollo web ágil y profesional con PHP

Enrutamiento

Page 48: Silex, desarrollo web ágil y profesional con PHP

$app->get('/', function () use ($app) { // ...});

Ruta de la portada

Page 49: Silex, desarrollo web ágil y profesional con PHP

$app->get('/agenda', function () use ($app) { // ...});

Ruta básica

Page 50: Silex, desarrollo web ágil y profesional con PHP

$app->get('/speakers/{slug}', function () use ($app) { // ...});

Ruta con partes variables

Page 51: Silex, desarrollo web ágil y profesional con PHP

$app->get('/speakers/{slug}', function () use ($app) { // ...});

Ruta con partes variables

Page 52: Silex, desarrollo web ágil y profesional con PHP

$app->get('/speakers/{slug}', function () use ($app) { // ...});

Ruta con partes variables

/speakers/pablo-garaizar/speakers/carlos-sanchez/speakers/esto-esta-mal

Page 53: Silex, desarrollo web ágil y profesional con PHP

$app->post('/registro', function () use ($app) { // ...});

Otros métodos HTTP

Page 54: Silex, desarrollo web ágil y profesional con PHP

$app->post('/registro', function () use ($app) { // ...});

Otros métodos HTTP

$app->put( );$app->delete( );

Page 55: Silex, desarrollo web ágil y profesional con PHP

$app->match('/registro', function () use ($app) { // ...});

Ruta para todos los métodos HTTP

Page 56: Silex, desarrollo web ágil y profesional con PHP

$app->match('/registro', function () use ($app) { // ...})->method('GET|POST');

Ruta para algunos métodos HTTP

Page 57: Silex, desarrollo web ágil y profesional con PHP

$app->get('/speakers/{slug}', function ($slug) { // ...});

Rutas con variables

Page 58: Silex, desarrollo web ágil y profesional con PHP

$app->get('/speakers/{track}/{slug}', function ($track, $slug) use ($app) { // ...});

Rutas con variables

Page 59: Silex, desarrollo web ágil y profesional con PHP

use Symfony\Component\HttpFoundation\Request;

$app->get('/speakers/{slug}', function (Request $request, $slug) { // ...});

Variables especiales

Page 60: Silex, desarrollo web ágil y profesional con PHP

use Symfony\Component\HttpFoundation\Request;

$app->get('/speakers/{slug}', function (Request $request, $slug) { // ...});

Variables especiales

Page 61: Silex, desarrollo web ágil y profesional con PHP

use Symfony\Component\HttpFoundation\Request;

$app->get('/speakers/{slug}', function (Request $request, $slug) { // ...});

Variables especiales

$request->server->get('HTTP_USER_AGENT')$request->get('slug')

Page 62: Silex, desarrollo web ágil y profesional con PHP

$app->get('/schedule/{slug}', function ($slug) use ($app) { // ...})->convert('slug', function ($slug) { return strtolower($slug);});

Modificando las variables de la ruta

Page 63: Silex, desarrollo web ágil y profesional con PHP

$app->get('/schedule/{slug}', function ($slug) use ($app) { // ...})->convert('slug', function ($slug) { return str_replace('-', '_', $slug);});

Modificando las variables de la ruta

Page 64: Silex, desarrollo web ágil y profesional con PHP

$app->get('/schedule/{track}', function ($track) { // ...})->assert('track', '\d+');

Restringiendo las variables de la ruta

Page 65: Silex, desarrollo web ágil y profesional con PHP

$app->get('/schedule/{track}', function ($track) { // ...})->assert('track', 'track\d+');

Restringiendo las variables de la ruta

Page 66: Silex, desarrollo web ágil y profesional con PHP

$app->get('/schedule/{track}', function ($track) { // ...})->assert('track', '1|2');

Restringiendo las variables de la ruta

Page 67: Silex, desarrollo web ágil y profesional con PHP

$app->get('/schedule/{track}', function ($track) { // ...})->value('track', '1');

Valores por defecto

Page 68: Silex, desarrollo web ágil y profesional con PHP

$app->get('/schedule/{track}', function ($track) { // ...})->value('track', '1');

Valores por defecto

/schedule/schedule/1

Page 69: Silex, desarrollo web ágil y profesional con PHP

$app->get('/', function () use ($app) { // ...})->bind('portada');

Rutas con nombre

Page 70: Silex, desarrollo web ágil y profesional con PHP

Controladores

Page 71: Silex, desarrollo web ágil y profesional con PHP

$app->get('/donde-comer', function () use ($app) { return $app['twig']->render('comer.twig');})->bind('comer');

Controlador básico

Page 72: Silex, desarrollo web ágil y profesional con PHP

$app->get('/', function () use ($app) { $ponentes = $app['ponentes'];

return $app['twig']->render('portada.twig', array('ponentes' => $ponentes) );})->bind('portada');

Controlador típico

Page 73: Silex, desarrollo web ágil y profesional con PHP

$app->get('/', function () use ($app) { $ponentes = $app['ponentes'];

return $app['twig']->render('portada.twig', array('ponentes' => $ponentes) );})->bind('portada');

Controlador típico

Page 74: Silex, desarrollo web ágil y profesional con PHP

$app->get('/speakers/{slug}', function ($slug) use ($app) {

if (...) { $app->abort(404, "No existe el ponente."); }

// ... return $app['twig']->render('ponente.twig',...);

})->bind('ponente');

Gestión de errores

Page 75: Silex, desarrollo web ágil y profesional con PHP

$app->get('/speakers/{slug}', function ($slug) use ($app) {

if (...) { $app->abort(404, "No existe el ponente."); }

// ... return $app['twig']->render('ponente.twig',...);

})->bind('ponente');

Gestión de errores

Page 76: Silex, desarrollo web ágil y profesional con PHP

$app->error(function (\Exception $e, $code) use ($app) {

// ...

});

Controlador especial para errores

Page 77: Silex, desarrollo web ágil y profesional con PHP

$app->error(function (\Exception $e, $code) use ($app) {

// ...

});

Controlador especial para errores

Page 78: Silex, desarrollo web ágil y profesional con PHP

$app->get('/', ...)->bind('portada');

$app->get('/agenda', ...)->bind('agenda');

$app->get('/speakers/{slug}', ...)->bind('ponente');

$app->get('/schedule/{slug}', ...)->bind('ponencia');

Esqueleto de una aplicación Silex

Page 79: Silex, desarrollo web ágil y profesional con PHP

1 aplicación = 1 archivo

$app->get('/', ...)->bind('portada');

$app->get('/agenda', ...)->bind('agenda');

$app->get('/speakers/{slug}', ...)->bind('ponente');

$app->get('/schedule/{slug}', ...)->bind('ponencia');

controllers.php

Page 80: Silex, desarrollo web ágil y profesional con PHP

1 aplicación = 1 archivo

$app->get('/', ...)->bind('portada');

$app->get('/agenda', ...)->bind('agenda');

$app->get('/speakers/{slug}', ...)->bind('ponente');

$app->get('/schedule/{slug}', ...)->bind('ponencia');

controllers.php

EL ORDEN IMPORTA

Page 81: Silex, desarrollo web ágil y profesional con PHP

Middlewares(filtros)

Page 82: Silex, desarrollo web ágil y profesional con PHP

Petición HTTP

Tu aplicación

Página HTML

Objeto Request

Objeto Response

Silex

Silex

Page 83: Silex, desarrollo web ágil y profesional con PHP

Petición HTTP

Tu aplicación

Página HTML

Objeto Request

Objeto Response

Silex

Silex

!

!

!

Page 84: Silex, desarrollo web ágil y profesional con PHP

$app->before(function (Request $request) { // ...});

Filtro before

Page 85: Silex, desarrollo web ágil y profesional con PHP

Secuencia de ejecución• Buscar la ruta que pide el usuario.

• Comprobar la seguridad.

• Ejecutar filtro before()

• Ejecutar controlador de la ruta

Page 86: Silex, desarrollo web ágil y profesional con PHP

$app->before(function (Request $request) { if (...) { return new RedirectResponse('/login'); }});

Ejemplo de filtro before

Page 87: Silex, desarrollo web ágil y profesional con PHP

$app->after(function (Request $request, Response $response) { // ...});

Filtro after

Page 88: Silex, desarrollo web ágil y profesional con PHP

Secuencia de ejecución• Buscar la ruta que pide el usuario.

• Comprobar la seguridad.

• Ejecutar filtro before( )

• Ejecutar controlador de la ruta.

• Ejecutar filtro after( )

• Enviar respuesta al usuario.

Page 89: Silex, desarrollo web ágil y profesional con PHP

$app->after(function (Request $request) { log('...');});

Ejemplo de filtro after

Page 90: Silex, desarrollo web ágil y profesional con PHP

$app->after(function (Request $request) { log('...');});

Ejemplo de filtro after

¿Dónde está mi respuesta?

Page 91: Silex, desarrollo web ágil y profesional con PHP

$app->finish(function (Request $request, Response $response) { // ...});

Filtro finish

Page 92: Silex, desarrollo web ágil y profesional con PHP

$app->get('/', ...)->bind('portada')->before(...);

$app->get('/agenda', ...)->bind('agenda')->before(...)->after(...);

$app->get('/speakers/{slug}', ...)->bind('ponente')->before(...);

$app->get('/schedule/{slug}', ...)->bind('ponencia')->before(...);

Cada ruta con su filtro

Page 93: Silex, desarrollo web ágil y profesional con PHP

Proveedores deservicios

Page 94: Silex, desarrollo web ágil y profesional con PHP

Núcleo de Silex

Bases de datos

Plantillas

Caché HTTP

Envío de emails

Formularios

proveedores

Page 95: Silex, desarrollo web ágil y profesional con PHP

Núcleo de Silex

Bases de datos

Plantillas

Caché HTTP

Envío de emails

Formularios

proveedores

Page 96: Silex, desarrollo web ágil y profesional con PHP

Núcleo de Silex

Bases de datos

Plantillas

Caché HTTP

Envío de emails

Formularios

proveedores

Page 97: Silex, desarrollo web ágil y profesional con PHP

Núcleo de Silex

Bases de datos

Plantillas

Caché HTTP

Envío de emails

Formularios

Page 98: Silex, desarrollo web ágil y profesional con PHP

Bases de datos Serializador Seguridad

Formularios Logger Sesiones

Validación Emails Plantillas

Caché HTTP URL

Page 99: Silex, desarrollo web ágil y profesional con PHP

use Silex\Provider\FormServiceProvider;

// ...

$app->register(new FormServiceProvider());

Usar formularios de Symfony2

Page 100: Silex, desarrollo web ágil y profesional con PHP

use Silex\Provider\DoctrineServiceProvider;

// ...

$app->register(new DoctrineServiceProvider());

Acceder a BBDD con Doctrine2

Page 101: Silex, desarrollo web ágil y profesional con PHP

use Silex\Provider\TwigServiceProvider;

// ...

$app->register(new TwigServiceProvider(), array( 'twig.path' => array(__DIR__.'/../templates'), 'twig.options' => array('...'),));

Utilizar las plantillas de Twig

Page 102: Silex, desarrollo web ágil y profesional con PHP

DEMO

Page 103: Silex, desarrollo web ágil y profesional con PHP

github.com/javiereguiluz/bilbostack

Fork me on GitH

ub

Page 104: Silex, desarrollo web ágil y profesional con PHP

Instalación

Page 105: Silex, desarrollo web ágil y profesional con PHP

Descargar archivo comprimido

silex.sensiolabs.org

Page 106: Silex, desarrollo web ágil y profesional con PHP

Descargar archivo comprimido

Page 107: Silex, desarrollo web ágil y profesional con PHP

Descargar archivo comprimido

Page 108: Silex, desarrollo web ágil y profesional con PHP

Descargar archivo comprimido

Page 109: Silex, desarrollo web ágil y profesional con PHP

{ "require": { "silex/silex": "1.0.*" }, "minimum-stability": "dev"}

Instalación via composer.json

Page 110: Silex, desarrollo web ágil y profesional con PHP

{ "require": { "fabpot/silex-skeleton": "*" }, "minimum-stability": "dev"}

Instalación via composer.json

Page 111: Silex, desarrollo web ágil y profesional con PHP

$ composer create-project fabpot/silex-skeleton --stability=dev

Instalación recomendada

Page 112: Silex, desarrollo web ágil y profesional con PHP
Page 113: Silex, desarrollo web ágil y profesional con PHP
Page 114: Silex, desarrollo web ágil y profesional con PHP
Page 115: Silex, desarrollo web ágil y profesional con PHP
Page 116: Silex, desarrollo web ágil y profesional con PHP
Page 117: Silex, desarrollo web ágil y profesional con PHP

web/index.php

src/app.php

src/controllers.php

Page 118: Silex, desarrollo web ágil y profesional con PHP

web/index.php

src/app.php

src/controllers.php

No tocar

Page 119: Silex, desarrollo web ágil y profesional con PHP

web/index.php

src/app.php

src/controllers.php

No tocar Activas servicios

Page 120: Silex, desarrollo web ágil y profesional con PHP

web/index.php

src/app.php

src/controllers.php

No tocar Activas servicios

$app->get('/', ...});

Page 121: Silex, desarrollo web ágil y profesional con PHP

Buenasprácticas

Page 122: Silex, desarrollo web ágil y profesional con PHP

Organizandolos controladores

Page 123: Silex, desarrollo web ágil y profesional con PHP

$app->get('/', ...);

blog.php

$app->get('/', ...);

backend.php

$app->get('/', ...);

// ...

controllers.php

Page 124: Silex, desarrollo web ágil y profesional con PHP

$app->mount('/blog', include 'blog.php');$app->mount('/admin', include 'backend.php');

Importando controladores

Page 125: Silex, desarrollo web ágil y profesional con PHP

$app->mount('/blog', include 'blog.php');$app->mount('/admin', include 'backend.php');

Importando controladores

Page 126: Silex, desarrollo web ágil y profesional con PHP

$app->mount('/blog', include 'blog.php');$app->mount('/admin', include 'backend.php');

Importando controladores

PORTADA: /PORTADA DE BLOG: /blog/PORTADA DE BACKEND: /admin/

Page 127: Silex, desarrollo web ágil y profesional con PHP

1 aplicación = 1 archivo

$app->get('/', ...)->bind('portada');

$app->get('/agenda', ...)->bind('agenda');

$app->get('/speakers/{slug}', ...)->bind('ponente');

$app->get('/schedule/{slug}', ...)->bind('ponencia');

controllers.php

Page 128: Silex, desarrollo web ágil y profesional con PHP

1 aplicación pequeña = 1 archivo

$app->get('/', ...)->bind('portada');

$app->get('/agenda', ...)->bind('agenda');

$app->get('/speakers/{slug}', ...)->bind('ponente');

$app->get('/schedule/{slug}', ...)->bind('ponencia');

controllers.php

Page 129: Silex, desarrollo web ágil y profesional con PHP

$app->get('/', ...);

$app->get('/ver', ...);

$app->get('/listar', ...);

$app->get('/', ...);

1 aplicación mediana = N archivos

$app->get('/', ...)->bind('portada');

$app->get('/agenda', ...)->bind('agenda');

$app->get('/speakers/{slug}', ...)->bind('ponente');

$app->get('/schedule/{slug}', ...)->bind('ponencia');

controllers.php

blog.php

backend.php

Page 130: Silex, desarrollo web ágil y profesional con PHP

Escalando unaaplicación Silex

Page 131: Silex, desarrollo web ágil y profesional con PHP

namespace Igorw\Shop\Controller;

use Silex\Application;use Symfony\Component\HttpFoundation\Request;

class ShopController{ public function indexAction(Request $request, Application $app) { ... }}

Controladores como clases

Page 132: Silex, desarrollo web ágil y profesional con PHP

$app->get('/', controller('shop/index'));

$app->match('/login', controller('shop/login'));

$app->get('/product', controller('shop/

product'));

Controladores como clases

Page 133: Silex, desarrollo web ágil y profesional con PHP

http://igor.io/2012/11/09/scaling-silex.html

Page 134: Silex, desarrollo web ágil y profesional con PHP

Puntosdébiles

Page 135: Silex, desarrollo web ágil y profesional con PHP

i18n Depuración

ORM Documentación

ESI

Page 136: Silex, desarrollo web ágil y profesional con PHP

i18n (internacionalización)• Fácil traducir contenidos

{{ "Hola Mundo"|trans }}

• No es cómodo traducir rutas y contenidos de la base de datos.

Page 137: Silex, desarrollo web ágil y profesional con PHP

ORM• No hay soporte oficial del ORM

completo (Doctrine2).

• No hay ORM alternativos ligeros.

• Si tu aplicación necesita un ORM, puede ser demasiado grande para Silex.

Page 138: Silex, desarrollo web ágil y profesional con PHP

// activar el modo debug$app['debug'] = true;

// activar el loguse Silex\Provider\MonologServiceProvider;

$app->register(new MonologServiceProvider(), array( 'monolog.logfile' => __DIR__.'/../logs/dev.log',));

Depuración

Page 139: Silex, desarrollo web ágil y profesional con PHP

Mensajes de error

Page 140: Silex, desarrollo web ágil y profesional con PHP
Page 141: Silex, desarrollo web ágil y profesional con PHP

ESI• Silex incluye soporte de ESI.

• Su uso es bastante incómodo (comparado con Symfony2).

Page 142: Silex, desarrollo web ágil y profesional con PHP

Documentación• Todas las características de Silex

están documentadas.

• No es tan abundante como la de Symfony2.

Page 143: Silex, desarrollo web ágil y profesional con PHP

Documentación• Oficial

silex.sensiolabs.org/documentation

• Traducciónlibrosweb.es/silex

Page 144: Silex, desarrollo web ágil y profesional con PHP

Conclusiones

Page 145: Silex, desarrollo web ágil y profesional con PHP

Conclusiones• Silex es un microframework, pero no es

un juguete.

Page 146: Silex, desarrollo web ágil y profesional con PHP

Conclusiones• Silex es un microframework, pero no es

un juguete.

• Silex sirve para cualquier aplicación web que no sea enorme.

Page 147: Silex, desarrollo web ágil y profesional con PHP

Conclusiones• Silex es un microframework, pero no es

un juguete.

• Silex sirve para cualquier aplicación web que no sea enorme.

• Silex reduce a “horas” el tiempo de desarrollo de aplicaciones enteras.

Page 148: Silex, desarrollo web ágil y profesional con PHP

Conclusiones• Silex es un microframework, pero no es

un juguete.

• Silex sirve para cualquier aplicación web que no sea enorme.

• Silex reduce a “horas” el tiempo de desarrollo de aplicaciones enteras.

• Silex combina la agilidad de PHP con la profesionalidad de Symfony.

Page 149: Silex, desarrollo web ágil y profesional con PHP

GRACIAS.