SlideShare a Scribd company logo
1 of 150
Download to read offline
Silex
  desarrollo web ágil y
  profesional con PHP

BILBOSTACK          JAVIER EGUILUZ
26 ENERO 2013
Gracias a la organización.



Asier   Fran     Ibon    Vicenç
Agenda
 1. Introducción
 2. Programando aplicaciones
 3. DEMO
 4. Buenas prácticas
 5. Puntos débiles
Introducción
¿Por qué?
En el mundo de los negocios...
1. Rápido
2. Barato
3. Bueno
En el mundo de los negocios...
1. Rápido              ELIGE DOS

2. Barato
3. Bueno
En el mundo de la programación...
1. Bien hecho
2. Terminado a tiempo
3. Barato
En el mundo de la programación...
1. Bien hecho     ELIGE UNA

2. Terminado a tiempo
3. Barato
En el mundo de la programación...
✔ Bien
1.     hecho
✔ Terminado a tiempo
2.
✔ Barato
3.
   Con Silex puedes
   tenerlo todo
¡no tengo
¡quiero hacerlo bien!    tiempo!
¿Qué es
 Silex?
Foto: Wikipedia
Curiosity (2012)




                  Sojourner (2007)
Foto: Wikipedia
Sojourner   Curiosity
                (2007)      (2012)

Masa            11 kg      900 kg
Coste ($)      150 M      1.800 M
Memoria RAM     64 KB      256 MB
CPU             2 MHz     200 MHz
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.
Silex
The PHP micro-framework
based on the Symfony2
Components

                           el logo
                          de Silex
los dos son frameworks y usan los mismos componentes, pero...
...Symfony es un framework muy grande y Silex es un framework muy pequeño
Silex   Symfony2
Peso               5 MB      8 MB
Archivos           3.366    6.578
Nivel dificultad

Flexibilidad
Los creadores de Silex




Igor Wiedler     Fabien Potencier
@igorw           @fabpot
+ fácil     + calidad
- calidad   - facil
+ fácil     + calidad
- calidad   - facil
Programando
 aplicaciones
Funciones anónimas
         y closures
Función normal
function suma($a, $b) {
  return $a + $b;
}
Función anónima
function ($a, $b) {
  return $a + $b;
}
Usando una función anónima
$app->get('...', function ($a, $b) {
   return $a + $b;
});
Closure
$a = 3;
function ($b) {
  return $a + $b;
}
Closure
$a = 3;             NO FUNCIONA
function ($b) {
  return $a + $b;
}
Closure
$a = 3;
function ($b) use ($a) {
  return $a + $b;
}
El código más común de Silex
$app->get('...', function ($var) use ($app) {
   // ...
});
El primer
 ejemplo
Hola
mundo.
http://bilbostack.com/hola
Hola Mundo en Silex
require_once __DIR__.'/../vendor/autoload.php';

$app = new SilexApplication();

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

$app->run();
Cargar clases automáticamente
require_once __DIR__.'/../vendor/autoload.php';

$app = new SilexApplication();

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

$app->run();
Crear la aplicación Silex
require_once __DIR__.'/../vendor/autoload.php';

$app = new SilexApplication();

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

$app->run();
Ejecutar código para una URL
require_once __DIR__.'/../vendor/autoload.php';

$app = new SilexApplication();

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

$app->run();
Arrancar la aplicación
require_once __DIR__.'/../vendor/autoload.php';

$app = new SilexApplication();

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

$app->run();
Hola Mundo en Silex
require_once __DIR__.'/../vendor/autoload.php';

$app = new SilexApplication();

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

$app->run();
Sinatra / Ruby

require 'sinatra'

get '/hola' do
 "Hola mundo."
end
node.js / JavaScript

var http = require('http');

http.createServer(function (request, response) {
   response.writeHead(
      200, { 'Content-Type': 'text/plain' }
   );
   response.end('Hola mundon');
}).listen(80);
Un ejemplo
       real
Fo
                     rk
                          m
                           eo
                              n
github.com/                       Gi
                                    tH
                                      ub

javiereguiluz/bilbostack
Enrutamiento
Ruta de la portada
$app->get('/', function () use ($app) {
   // ...
});
Ruta básica
$app->get('/agenda', function () use ($app) {
   // ...
});
Ruta con partes variables
$app->get('/speakers/{slug}', function ()
                              use ($app) {
   // ...
});
Ruta con partes variables
$app->get('/speakers/{slug}', function ()
                              use ($app) {
   // ...
});
Ruta con partes variables
$app->get('/speakers/{slug}', function ()
                              use ($app) {
   // ...
});

/speakers/pablo-garaizar
/speakers/carlos-sanchez
/speakers/esto-esta-mal
Otros métodos HTTP
$app->post('/registro', function () use ($app) {
   // ...
});
Otros métodos HTTP
$app->post('/registro', function () use ($app) {
   // ...
});

$app->put( );
$app->delete( );
Ruta para todos los métodos HTTP
$app->match('/registro', function () use ($app) {
   // ...
});
Ruta para algunos métodos HTTP
$app->match('/registro', function () use ($app) {
   // ...
})
->method('GET|POST');
Rutas con variables
$app->get('/speakers/{slug}', function ($slug) {
   // ...
});
Rutas con variables
$app->get('/speakers/{track}/{slug}',
         function ($track, $slug) use ($app) {
   // ...
});
Variables especiales
use SymfonyComponentHttpFoundationRequest;

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

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

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

$request->server->get('HTTP_USER_AGENT')
$request->get('slug')
Modificando las variables de la ruta
$app->get('/schedule/{slug}',
         function ($slug) use ($app) {
   // ...
})->convert('slug', function ($slug) {
   return strtolower($slug);
});
Modificando las variables de la ruta
$app->get('/schedule/{slug}',
         function ($slug) use ($app) {
   // ...
})->convert('slug', function ($slug) {
   return str_replace('-', '_', $slug);
});
Restringiendo las variables de la ruta
$app->get('/schedule/{track}', function ($track)
{
  // ...
})->assert('track', 'd+');
Restringiendo las variables de la ruta
$app->get('/schedule/{track}', function ($track)
{
  // ...
})->assert('track', 'trackd+');
Restringiendo las variables de la ruta
$app->get('/schedule/{track}', function ($track)
{
  // ...
})->assert('track', '1|2');
Valores por defecto
$app->get('/schedule/{track}', function ($track)
{
  // ...
})->value('track', '1');
Valores por defecto
$app->get('/schedule/{track}', function ($track)
{
  // ...
})->value('track', '1');

/schedule
/schedule/1
Rutas con nombre
$app->get('/', function () use ($app) {
  // ...
})->bind('portada');
Controladores
Controlador básico
$app->get('/donde-comer', function ()
                             use ($app) {
   return $app['twig']->render('comer.twig');
})
->bind('comer');
Controlador típico
$app->get('/', function () use ($app) {
  $ponentes = $app['ponentes'];

  return $app['twig']->render('portada.twig',
         array('ponentes' => $ponentes)
  );
})->bind('portada');
Controlador típico
$app->get('/', function () use ($app) {
  $ponentes = $app['ponentes'];

  return $app['twig']->render('portada.twig',
         array('ponentes' => $ponentes)
  );
})->bind('portada');
Gestión de errores
$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
$app->get('/speakers/{slug}',
      function ($slug) use ($app) {
  if (...) {
      $app->abort(404, "No existe el ponente.");
  }

  // ...

  return $app['twig']->render('ponente.twig',...);
})->bind('ponente');
Controlador especial para errores
$app->error(function (Exception $e, $code)
            use ($app) {

  // ...

});
Controlador especial para errores
$app->error(function (Exception $e, $code)
            use ($app) {

  // ...

});
Esqueleto de una aplicación Silex
$app->get('/', ...)->bind('portada');

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

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

$app->get('/schedule/{slug}', ...)
->bind('ponencia');
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
1 aplicación = 1 archivo

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

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

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




                 controllers.php
Middlewares
     (filtros)
Petición HTTP           Objeto Request



                    Silex



                            Tu aplicación




Página HTML         Silex
                            Objeto Response
Petición HTTP           Objeto Request

                                     !
                    Silex



                            Tu aplicación

         !                            !

Página HTML         Silex
                            Objeto Response
Filtro before
$app->before(function (Request $request) {
   // ...
});
Secuencia de ejecución
• Buscar la ruta que pide el usuario.
• Comprobar la seguridad.
• Ejecutar filtro before()
• Ejecutar controlador de la ruta
Ejemplo de filtro before
$app->before(function (Request $request) {
   if (...) {
       return new RedirectResponse('/login');
   }
});
Filtro after
$app->after(function (Request $request,
                      Response $response) {
   // ...
});
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.
Ejemplo de filtro after
$app->after(function (Request $request) {
   log('...');
});
Ejemplo de filtro after
$app->after(function (Request $request) {
   log('...');
});

                 ¿Dónde está mi
                   respuesta?
Filtro finish
$app->finish(function (Request $request,
                       Response $response) {
   // ...
});
Cada ruta con su filtro
$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(...);
Proveedores de
      servicios
Bases de datos


           Formularios

Núcleo     Plantillas

de Silex   Caché HTTP


           Envío de emails

             proveedores
Bases de datos


                        Formularios

Núcleo     Plantillas

de Silex                Caché HTTP


                        Envío de emails

                          proveedores
Bases de datos


           Formularios

Núcleo                   Plantillas

de Silex                 Caché HTTP


                      Envío de emails

                            proveedores
Bases de datos


           Formularios

Núcleo     Plantillas

de Silex   Caché HTTP


           Envío de emails
Bases de datos   Serializador   Seguridad


Formularios      Logger         Sesiones


Validación       Emails         Plantillas


Caché HTTP       URL
Usar formularios de Symfony2
use SilexProviderFormServiceProvider;

// ...

$app->register(new FormServiceProvider());
Acceder a BBDD con Doctrine2
use SilexProviderDoctrineServiceProvider;

// ...

$app->register(new DoctrineServiceProvider());
Utilizar las plantillas de Twig
use SilexProviderTwigServiceProvider;

// ...

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




                                                ub
                                          G itH
                                   e on
                                k m
                            F or
Instalación
Descargar archivo comprimido

   silex.sensiolabs.org
Descargar archivo comprimido
Descargar archivo comprimido
Descargar archivo comprimido
Instalación via composer.json
{
  "require": {
     "silex/silex": "1.0.*"
  },
  "minimum-stability": "dev"
}
Instalación via composer.json
{
  "require": {
     "fabpot/silex-skeleton": "*"
  },
  "minimum-stability": "dev"
}
Instalación recomendada
$ composer
  create-project
  fabpot/silex-skeleton
  --stability=dev
web/        src/      src/
index.php   app.php   controllers.php
web/        src/      src/
index.php   app.php   controllers.php




No tocar
web/        src/        src/
index.php   app.php     controllers.php




No tocar     Activas
            servicios
web/        src/        src/
index.php   app.php     controllers.php




No tocar     Activas       $app
            servicios   ->get('/', ...});
Buenas
prácticas
Organizando
los controladores
$app->get('/', ...);

                         // ...


                                  controllers.php

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



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


PORTADA: /
PORTADA DE BLOG: /blog/
PORTADA DE BACKEND: /admin/
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
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
1 aplicación mediana = N archivos
$app->get('/', ...)->bind('portada');   $app->get('/', ...);

$app->get('/agenda', ...)-              $app->get('/ver', ...);
>bind('agenda');
                                        $app->get('/listar', ...);
$app->get('/speakers/{slug}', ...)
->bind('ponente');
                                                                     blog.php
$app->get('/schedule/{slug}', ...)
->bind('ponencia');



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




                 controllers.php                               backend.php
Escalando una
aplicación Silex
Controladores como clases
namespace IgorwShopController;

use SilexApplication;
use SymfonyComponentHttpFoundationRequest;

class ShopController
{
   public function indexAction(Request $request, Application $app)
   {
     ...
   }
}
Controladores como clases
$app->get('/', controller('shop/index'));
$app->match('/login', controller('shop/login'));
$app->get('/product', controller('shop/
product'));
http://igor.io/2012/11/09/scaling-silex.html
Puntos
débiles
i18n   Depuración

ORM    Documentación

ESI
i18n (internacionalización)
• Fácil traducir contenidos
  {{ "Hola Mundo"|trans }}
• No es cómodo traducir rutas y
  contenidos de la base de datos.
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.
Depuración
// activar el modo debug
$app['debug'] = true;

// activar el log
use SilexProviderMonologServiceProvider;

$app->register(new MonologServiceProvider(),
array(
    'monolog.logfile' => __DIR__.'/../logs/dev.log',
));
Mensajes de error
ESI
• Silex incluye soporte de ESI.
• Su uso es bastante incómodo
  (comparado con Symfony2).
Documentación
• Todas las características de Silex
  están documentadas.
• No es tan abundante como la de
  Symfony2.
Documentación
• Oficial
  silex.sensiolabs.org/documentation
• Traducción
  librosweb.es/silex
Conclusiones
Conclusiones
• Silex es un microframework, pero no es
  un juguete.
Conclusiones
• Silex es un microframework, pero no es
  un juguete.
• Silex sirve para cualquier aplicación
  web que no sea enorme.
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.
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.
GRACIAS.
Contacto
         • javier.eguiluz@gmail.com
         • twitter.com/javiereguiluz
         • github.com/javiereguiluz
         • linkedin.com/in/javiereguiluz



domingo, 27 de enero de 13

More Related Content

What's hot

Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...betabeers
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPressAsier Marqués
 
Slides components en
Slides components enSlides components en
Slides components enJavier López
 
Wp config.php
Wp config.phpWp config.php
Wp config.phpgregozz
 
Curso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalCurso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalMediaglobe Innova
 
PHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básicoPHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básicoSpacetoshare
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendarjvelizster
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Raul Fraile
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Ignacio Martín
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysqlI LG
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2Raul Fraile
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularFreelancer
 
Php excel
Php excelPhp excel
Php excelpcuseth
 
Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...jbersosa
 

What's hot (20)

Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPress
 
RabbitMQ y Symfony
RabbitMQ y SymfonyRabbitMQ y Symfony
RabbitMQ y Symfony
 
Slides components en
Slides components enSlides components en
Slides components en
 
Doctrine2 sf2Vigo
Doctrine2 sf2VigoDoctrine2 sf2Vigo
Doctrine2 sf2Vigo
 
Wp config.php
Wp config.phpWp config.php
Wp config.php
 
Curso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalCurso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en Drupal
 
PHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básicoPHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básico
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendar
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysql
 
Php
PhpPhp
Php
 
Introducción a los hooks
Introducción a los hooksIntroducción a los hooks
Introducción a los hooks
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
 
Php excel
Php excelPhp excel
Php excel
 
Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...
 

Viewers also liked

Silex para aplicaciones web MVC
Silex para aplicaciones web MVCSilex para aplicaciones web MVC
Silex para aplicaciones web MVCAsier Marqués
 
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPIntroducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPDaniel Primo
 
Create - Decoupled CMS interface
Create - Decoupled CMS interfaceCreate - Decoupled CMS interface
Create - Decoupled CMS interfaceHenri Bergius
 
Parque De Agua Web - Propuesta
Parque De Agua Web - PropuestaParque De Agua Web - Propuesta
Parque De Agua Web - Propuestaelrofes
 
Propuesta diseño web
Propuesta diseño webPropuesta diseño web
Propuesta diseño webdarwpinorozco
 
Presentación Framework CodeIgniter
Presentación Framework CodeIgniter Presentación Framework CodeIgniter
Presentación Framework CodeIgniter ADWE Team
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBJavier Condori Flores
 
Iniciación PHP 5. Programación Web
Iniciación PHP 5. Programación WebIniciación PHP 5. Programación Web
Iniciación PHP 5. Programación WebRightster
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónRightster
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosRightster
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Javier Eguiluz
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosRightster
 

Viewers also liked (20)

Silex para aplicaciones web MVC
Silex para aplicaciones web MVCSilex para aplicaciones web MVC
Silex para aplicaciones web MVC
 
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPIntroducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
 
Introducción a Silex
Introducción a SilexIntroducción a Silex
Introducción a Silex
 
Create - Decoupled CMS interface
Create - Decoupled CMS interfaceCreate - Decoupled CMS interface
Create - Decoupled CMS interface
 
Parque De Agua Web - Propuesta
Parque De Agua Web - PropuestaParque De Agua Web - Propuesta
Parque De Agua Web - Propuesta
 
Propuesta diseño web
Propuesta diseño webPropuesta diseño web
Propuesta diseño web
 
Propuesta web
Propuesta webPropuesta web
Propuesta web
 
Propuesta web 2.0 greatest (f)
Propuesta web 2.0 greatest (f)Propuesta web 2.0 greatest (f)
Propuesta web 2.0 greatest (f)
 
MVC
MVCMVC
MVC
 
Febrero 2009 - Presentación PFC AGritos!
Febrero 2009 - Presentación PFC AGritos!Febrero 2009 - Presentación PFC AGritos!
Febrero 2009 - Presentación PFC AGritos!
 
Presentación Framework CodeIgniter
Presentación Framework CodeIgniter Presentación Framework CodeIgniter
Presentación Framework CodeIgniter
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEB
 
Iniciación PHP 5. Programación Web
Iniciación PHP 5. Programación WebIniciación PHP 5. Programación Web
Iniciación PHP 5. Programación Web
 
MODELO VISTA CONTROLADOR EN PHP
MODELO VISTA CONTROLADOR EN PHPMODELO VISTA CONTROLADOR EN PHP
MODELO VISTA CONTROLADOR EN PHP
 
Curso php y_my_sql
Curso php y_my_sqlCurso php y_my_sql
Curso php y_my_sql
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. Introducción
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a Objetos
 
Propuesta Portal Web
Propuesta Portal WebPropuesta Portal Web
Propuesta Portal Web
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. Ejercicios
 

Similar to Desarrollo web ágil con Silex

Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Deployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaDeployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaAgencia INNN
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryJavier P.
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la DebianLeonardo Cezar
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la DebianLeonardo Cezar
 
Symfony: Domesticando las Vistas
Symfony: Domesticando las VistasSymfony: Domesticando las Vistas
Symfony: Domesticando las VistasJose Antonio Pio
 
Symfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlasSymfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlasDecharlas
 
Introducción a phone gap
Introducción a phone gapIntroducción a phone gap
Introducción a phone gapRodrigo Corral
 
Gulp js php sevilla 28 septiembre 2016
Gulp js   php sevilla 28 septiembre 2016Gulp js   php sevilla 28 septiembre 2016
Gulp js php sevilla 28 septiembre 2016Agencia INNN
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterAdolfo Sanz De Diego
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework SymfonyAlejandro Hernández
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryDavid Arango
 

Similar to Desarrollo web ágil con Silex (20)

Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Deployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaDeployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevilla
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 
Symfony: Domesticando las Vistas
Symfony: Domesticando las VistasSymfony: Domesticando las Vistas
Symfony: Domesticando las Vistas
 
Symfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlasSymfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlas
 
Laravel 5.1
Laravel 5.1Laravel 5.1
Laravel 5.1
 
(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery
 
JAVASCRIPT.pptx
JAVASCRIPT.pptxJAVASCRIPT.pptx
JAVASCRIPT.pptx
 
Introducción a phone gap
Introducción a phone gapIntroducción a phone gap
Introducción a phone gap
 
9.laravel
9.laravel9.laravel
9.laravel
 
Gulp js php sevilla 28 septiembre 2016
Gulp js   php sevilla 28 septiembre 2016Gulp js   php sevilla 28 septiembre 2016
Gulp js php sevilla 28 septiembre 2016
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
 
Symfony 2 CMF
Symfony 2 CMFSymfony 2 CMF
Symfony 2 CMF
 
Creación de plugins con Grails
Creación de plugins con GrailsCreación de plugins con Grails
Creación de plugins con Grails
 
Curso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzadosCurso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzados
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework Symfony
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQuery
 

More from Javier Eguiluz

deSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de SymfonydeSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de SymfonyJavier Eguiluz
 
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)Javier Eguiluz
 
Mastering Twig (DrupalCon Barcelona 2015)
Mastering Twig (DrupalCon Barcelona 2015)Mastering Twig (DrupalCon Barcelona 2015)
Mastering Twig (DrupalCon Barcelona 2015)Javier Eguiluz
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricksJavier Eguiluz
 
Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Javier Eguiluz
 
Twig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadasTwig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadasJavier Eguiluz
 
Desymfony 2012 - Concurso de diseño
Desymfony 2012 - Concurso de diseñoDesymfony 2012 - Concurso de diseño
Desymfony 2012 - Concurso de diseñoJavier Eguiluz
 
Curso Symfony - Anexos
Curso Symfony - AnexosCurso Symfony - Anexos
Curso Symfony - AnexosJavier Eguiluz
 
Curso Symfony - Clase 5
Curso Symfony - Clase 5Curso Symfony - Clase 5
Curso Symfony - Clase 5Javier Eguiluz
 
Curso Symfony - Clase 4
Curso Symfony - Clase 4Curso Symfony - Clase 4
Curso Symfony - Clase 4Javier Eguiluz
 
Curso Symfony - Clase 3
Curso Symfony - Clase 3Curso Symfony - Clase 3
Curso Symfony - Clase 3Javier Eguiluz
 
Curso Symfony - Clase 2
Curso Symfony - Clase 2Curso Symfony - Clase 2
Curso Symfony - Clase 2Javier Eguiluz
 
Curso Symfony - Clase 1
Curso Symfony - Clase 1Curso Symfony - Clase 1
Curso Symfony - Clase 1Javier Eguiluz
 

More from Javier Eguiluz (17)

deSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de SymfonydeSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
 
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
 
Mastering Twig (DrupalCon Barcelona 2015)
Mastering Twig (DrupalCon Barcelona 2015)Mastering Twig (DrupalCon Barcelona 2015)
Mastering Twig (DrupalCon Barcelona 2015)
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricks
 
Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8
 
Silex al límite
Silex al límiteSilex al límite
Silex al límite
 
Twig tips and tricks
Twig tips and tricksTwig tips and tricks
Twig tips and tricks
 
Twig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadasTwig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadas
 
Wallpaper Notifier
Wallpaper NotifierWallpaper Notifier
Wallpaper Notifier
 
Desymfony 2012 - Concurso de diseño
Desymfony 2012 - Concurso de diseñoDesymfony 2012 - Concurso de diseño
Desymfony 2012 - Concurso de diseño
 
Desymfony 2011 - Twig
Desymfony 2011 - TwigDesymfony 2011 - Twig
Desymfony 2011 - Twig
 
Curso Symfony - Anexos
Curso Symfony - AnexosCurso Symfony - Anexos
Curso Symfony - Anexos
 
Curso Symfony - Clase 5
Curso Symfony - Clase 5Curso Symfony - Clase 5
Curso Symfony - Clase 5
 
Curso Symfony - Clase 4
Curso Symfony - Clase 4Curso Symfony - Clase 4
Curso Symfony - Clase 4
 
Curso Symfony - Clase 3
Curso Symfony - Clase 3Curso Symfony - Clase 3
Curso Symfony - Clase 3
 
Curso Symfony - Clase 2
Curso Symfony - Clase 2Curso Symfony - Clase 2
Curso Symfony - Clase 2
 
Curso Symfony - Clase 1
Curso Symfony - Clase 1Curso Symfony - Clase 1
Curso Symfony - Clase 1
 

Recently uploaded

Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 

Recently uploaded (20)

Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 

Desarrollo web ágil con Silex