SlideShare a Scribd company logo
1 of 63
Download to read offline
Symfony en Drupal 8
Raul Fraile
PHP/Symfony2 dev @
PHP 5.3 Zend Certified Engineer
Symfony Certified Developer
LadybugPHP
Sobre mi
https://leanpub.com/symfony-selfstudy
Drupal Island
Drupal Island
Durante años, Drupal ha sido la
envidia de muchos CMS/frameworks:
Comunidad activa, robustez,
extensibilidad…
Las mejoría de PHP en los últimos
años le obliga a cambiar.
Drupal Island
5.3+
Mejoras en OO
Namespaces
Closures
Traits
Funciones generadoras
Composer
function drupal_http_request($url, array $options = array()) {
// Allow an alternate HTTP client library to replace Drupal's default
// implementation.
$override_function = variable_get('drupal_http_request_function', FALSE);
if (!empty($override_function) && function_exists($override_function)) {
return $override_function($url, $options);
}
$result = new stdClass();
// Parse the URL and make sure we can handle the schema.
$uri = @parse_url($url);
if ($uri == FALSE) {
$result->error = 'unable to parse URL';
$result->code = -1001;
return $result;
}
if (!isset($uri['scheme'])) {
$result->error = 'missing schema';
$result->code = -1002;
return $result;
}
timer_start(__FUNCTION__);
// Merge the default options.
$options += array(
'headers' => array(),
Drupal Island
LOC: 304
Complejidad ciclomática: 41
N-Path: 25.303.344.960
drupal_http_request()
Drupal Island
N-Path ≈ Núm. caminos ≈ Tests
2 TB de tests
412 DVDs de tests
670K Drupals de tests
drupal_http_request()
Drupal Island
slideshare.net/ircmaxell/development-by-the-numbers
Anthony
Ferrara
Drupal Island
Dificultad para mantener el código.
Código antiguo, compatibilidad con
PHP 4.
Orientación a objetos testimonial.
Reinventando la rueda.
Drupal Island
NIHNot Invented Here
PIEProudly Found Elsewhere
Drupal Island
Drupal Island
ClassLoader
DependencyInjection
EventDispatcher
HttpFoundation
HttpKernel
Routing
Serializer
Validator
Yaml
Twig
Doctrine Common
Doctrine Annotations
Guzzle
Assetic
SymfonyCMF Routing
EasyRDF
PHPUnit
Zend Feed
Drupal Island
50% de las
dependencias de
Drupal 8 son
componentes de
Symfony
Drupal Island
¿Por qué Symfony?
Proyecto maduro y de calidad.
Basado en componentes. “Líder” de
la revolución contra los frameworks
monolíticos.
Comunidad grande y activa.
¿Por qué Symfony?
Componentes de
Symfony2
Conjunto de librerías desacopladas e
independientes.
Implementan funcionalidad común
para sitios/apps web.
Bloques con los que se construye el
full-stack framework.
Componentes de Symfony2
HttpFoundation
Abstracción del protocolo HTTP.
El origen de la colaboración entre
Symfony y Drupal.
HttpFoundation
query
request 

cookies
files
server
headers
getScheme
getHost
getClientIp
getMethod
getContentType
getPreferredLanguage
HttpFoundation
$_GET
$_POST
$_COOKIE
$_FILES
$_SERVER
GET /index.php HTTP/1.1
Host: test.com
Accept-Language:en;q=0.8
Accept-Encoding:gzip
User-Agent: Mozilla/5.0
HttpFoundation
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
$request = Request::createFromGlobals();
$html = sprintf(
'<h1>Hola %s!</h1>',
$request->query->get('name', 'Raul'));
$response = new Response($html);
$response
->headers->set("content-type", "text/html");
$response->send();
HttpKernel
El componente HttpKernel define
un proceso abstracto para convertir
un objeto Request en un Response:
HttpKernelInterface
HttpKernel
HttpKernel
Request ResponseHttpKernelInterface
Negociación
Caché
HttpKernel
Aplicación
Middleware
El componente dispone de una
implementación concreta de
HttpKernelInterface.
Diseñada para ser muy flexible, con
eventos “estándar”.
HttpKernel
HttpKernel
kernel.request
Request
Response
kernel.controller
kernel.view kernel.response
kernel.terminate
kernel.exception
ClassLoader
El componente ClassLoader permite
realizar autoload de clases en PHP.
Un único require/include por aplicación.
Permite cachear las rutas para ganar
rendimiento.
Dispone de 2 autoloaders: PSR-0 y
MapClass.
ClassLoader
Cada vez que se utiliza una clase
que no ha sido incluida previamente,
PHP utiliza el mecanismo de
autoload.
FQN + reglas/map = require(archivo)
ClassLoader
require_once( )
ClassLoader
new MyClass()
ClassMap PSR-0/4
Path
require_once( )
ClassLoader
new MyClass()
ClassMap PSR-0/4
Path
ClassLoader
PHP Framework Interop Group
The idea behind the group is for project
representatives to talk about the
commonalities between our projects and find
ways we can work together. Our main
audience is each other, but we’re very aware
that the rest of the PHP community is
watching. If other folks want to adopt what
we’re doing they are welcome to do so, but
that is not the aim.
ClassLoader
PHP Framework Interop Group
PSR-0 Autoloading Standard
PSR-1 Basic Coding Standard
PSR-2 Coding Style Guide
PSR-3 Logger Interface
PSR-4 Improved Autoloading
Routing
El componente Routing relaciona
peticiones HTTP con un conjunto de
variables.
Simplifica la tarea de crear URLs
amigables.
Intenta no afectar demasiado al
rendimiento de la aplicación.
Routing
Routing
use SymfonyComponentRoutingMatcherUrlMatcher;
use SymfonyComponentRoutingRequestContext;
use SymfonyComponentRoutingRouteCollection;
use SymfonyComponentRoutingRoute;
use SymfonyComponentHttpFoundationRequest;
$collection = new RouteCollection();
$collection->add('help', new Route('/help', array(
'controller' => 'HelpController',
'action' => 'indexAction'
)));
$collection->add('about', new Route('/about', array(
'controller' => 'AboutController',
'action' => 'indexAction'
)));
$context = new RequestContext();
$context->fromRequest(Request::createFromGlobals());
$matcher = new UrlMatcher($collection, $context);
EventDispatcher
El componente EventDispatcher
implementa el patrón Mediador
(Mediator Pattern), permitiendo
desacoplar nuestro código.
Alternativa OO a los clásicos hooks de
Drupal.
EventDispatcher
EventDispatcher
Productor
Consumidor
Consumidor
Consumidor
Consumidor
Mediador
EventDispatcher
use SymfonyComponentEventDispatcherEventDispatcher;
use SymfonyComponentEventDispatcherEvent;
$dispatcher = new EventDispatcher();
// add listeners
$dispatcher->addListener('blog.post.saved', function (BlogPostEvent
$event) {
echo 'Updating RSS feed' . PHP_EOL;
});
$dispatcher->addListener('blog.post.saved', function (BlogPostEvent
$event) {
echo 'Sending emails' . PHP_EOL;
});
// save the post
// …
// dispatch the event
$event = new BlogPostEvent($blogPost);
$dispatcher->dispatch('blog.post.saved', $event);
DependencyInjection
El componente DependencyInjection
permite centralizar la construcción de
objetos de la aplicación.
La inyección de dependencias es un
patrón de diseño de software.
Las dependencias no se crean (no new), se
inyectan.
Más flexibilidad y reusabilidad.
DependencyInjection
DependencyInjection
class Blog
{
protected $mailer;
protected $posts;
function __construct()
{
$this->mailer = new MyMailer();
}
function addPost(Post $post)
{
$this->posts[] = $post;
$this->sendMail($post);
}
function sendMail(Post $post)
{
$this->mailer->send(/* ... */);
}
}
DependencyInjection
class Blog
{
protected $mailer;
protected $posts;
function __construct(MailerInterface $mailer)
{
$this->mailer = $mailer;
}
function addPost(Post $post)
{
$this->posts[] = $post;
$this->sendMail($post);
}
function sendMail(Post $post)
{
$this->mailer->send(/* ... */);
}
}
DependencyInjection
DIC
SMTP …
$container->get(“Mailer”)
Mailer
DependencyInjection
leanpub.com/a-year-with-symfony
Matthias
Noback
Validator
El componente Validator permite
validar información de entrada a
nuestra aplicación.
Basado en la especificación JSR 303.
Se divide en constraints y validators.
Validator
Validator
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraintsRange;
$validator = Validation::createValidator();
$constraint = new Range(array(
'min' => 1,
'max' => 10
));
$violations = $validator->validateValue(
15, $constraint
);
Validator
NotBlank Ip DateTime CardScheme
Blank Range Time Currency
NotNull EqualTo Choice Luhn
Null NotEqualTo Collection Iban
True IdenticalTo Count Isbn
False NotIdenticalTo UniqueEntity Issn
Type LessThan Language Callback
Email LessThanOrEqual Locale Expression
Length GreaterThan Country All
Url GreaterThanOrEqual File UserPassword
Regex Date Image Valid
Serializer
El componente Serializer convierte
objetos PHP en otros formatos (p.ej.
JSON) y viceversa.
Está diseñado para que pueda ser
extensible.
Serializer
Serializer
Objeto FormatoArray
Serialización
Deserialización
Yaml
El componente Yaml parsea y serializa
archivos en formato YAML (YAML Ain't
Markup Language).
YAML es un formato de serialización
de datos amigable para humanos.
Soporte para múltiples lenguajes de
programación.
Yaml
Yaml
use SymfonyComponentYamlParser;
use SymfonyComponentYamlDumper;
$parser = new Parser();
$data = $parser->parse(
file_get_contents(‘data.yml')
);
$dumper = new Dumper();
$yaml = $dumper->dump($data);
file_put_contents('data2.yml', $yaml);
Recursos
Recursos
symfony.es/libro
Javier
Eguiluz
Recursos
blog.servergrove.com/tag/symfony2-components
Gràcies!
@raulfraile

More Related Content

What's hot

Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasosSoni BM
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework SymfonyAlejandro Hernández
 
Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2Javier Eguiluz
 
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosDesymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosJavier Eguiluz
 
Mi primer programa en Symfony2
Mi primer programa en Symfony2Mi primer programa en Symfony2
Mi primer programa en Symfony2César Hernández
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyJuan Eladio Sánchez Rosas
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itstomicx
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebFacundo E. Goñi Perez
 
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
 
Clase 2 conceptos fundamentales
Clase 2   conceptos fundamentalesClase 2   conceptos fundamentales
Clase 2 conceptos fundamentaleshydras_cs
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Symfony2, Jornadas Symfony
Symfony2, Jornadas SymfonySymfony2, Jornadas Symfony
Symfony2, Jornadas SymfonyJavier Eguiluz
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Pleased to meet you, Laravel
Pleased to meet you, LaravelPleased to meet you, Laravel
Pleased to meet you, LaravelRolando Caldas
 

What's hot (20)

Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework Symfony
 
9.laravel
9.laravel9.laravel
9.laravel
 
Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2
 
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosDesymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
 
Servicios web java, php, perl, google
Servicios web java, php, perl, googleServicios web java, php, perl, google
Servicios web java, php, perl, google
 
Mi primer programa en Symfony2
Mi primer programa en Symfony2Mi primer programa en Symfony2
Mi primer programa en Symfony2
 
Curso Php
Curso PhpCurso Php
Curso Php
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfony
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos Web
 
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
 
Clase 2 conceptos fundamentales
Clase 2   conceptos fundamentalesClase 2   conceptos fundamentales
Clase 2 conceptos fundamentales
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Symfony2, Jornadas Symfony
Symfony2, Jornadas SymfonySymfony2, Jornadas Symfony
Symfony2, Jornadas Symfony
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
4.Programación con PHP y MySQL
4.Programación con PHP y MySQL4.Programación con PHP y MySQL
4.Programación con PHP y MySQL
 
Pleased to meet you, Laravel
Pleased to meet you, LaravelPleased to meet you, Laravel
Pleased to meet you, Laravel
 

Similar to Symfony en Drupal 8 - DrupalCamp Spain

PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfRaaulroodriguez
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controllerhydras_cs
 
Deployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaDeployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaAgencia INNN
 
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
 
Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPJavier Eguiluz
 
Evidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPEvidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPSebastián Joya
 
Drupal7 para desarrolladores
Drupal7 para desarrolladoresDrupal7 para desarrolladores
Drupal7 para desarrolladoresPedro Cambra
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microserviciosPedro J. Molina
 
DESARROLLO WEB CON PHP-William Pardo.pptx
DESARROLLO WEB CON PHP-William Pardo.pptxDESARROLLO WEB CON PHP-William Pardo.pptx
DESARROLLO WEB CON PHP-William Pardo.pptxWilliamPardo22
 
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleServicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleArmando Nuñez Ramos
 

Similar to Symfony en Drupal 8 - DrupalCamp Spain (20)

PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controller
 
Deployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaDeployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevilla
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
Angular Conceptos Practicos 2
Angular Conceptos Practicos 2Angular Conceptos Practicos 2
Angular Conceptos Practicos 2
 
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...
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHP
 
Evidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPEvidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHP
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Drupal7 para desarrolladores
Drupal7 para desarrolladoresDrupal7 para desarrolladores
Drupal7 para desarrolladores
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
 
Servicios web
Servicios webServicios web
Servicios web
 
DESARROLLO WEB CON PHP-William Pardo.pptx
DESARROLLO WEB CON PHP-William Pardo.pptxDESARROLLO WEB CON PHP-William Pardo.pptx
DESARROLLO WEB CON PHP-William Pardo.pptx
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleServicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y Google
 
Servicios web
Servicios webServicios web
Servicios web
 

More from Raul Fraile

Aplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con SymfonyAplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con SymfonyRaul Fraile
 
Steganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHPSteganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHPRaul Fraile
 
How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014Raul Fraile
 
How GZIP works... in 10 minutes
How GZIP works... in 10 minutesHow GZIP works... in 10 minutes
How GZIP works... in 10 minutesRaul Fraile
 
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 appsRaul Fraile
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2Raul Fraile
 
Sistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidosSistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidosRaul Fraile
 
Refactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 appsRefactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 appsRaul Fraile
 
Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Raul Fraile
 
MidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsMidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsRaul Fraile
 
Symfony internals [english]
Symfony internals [english]Symfony internals [english]
Symfony internals [english]Raul Fraile
 
DeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internalsDeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internalsRaul Fraile
 
Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Raul Fraile
 
Symfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoSymfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoRaul Fraile
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Presentacion Symfony2
Presentacion Symfony2Presentacion Symfony2
Presentacion Symfony2Raul Fraile
 

More from Raul Fraile (16)

Aplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con SymfonyAplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con Symfony
 
Steganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHPSteganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHP
 
How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014
 
How GZIP works... in 10 minutes
How GZIP works... in 10 minutesHow GZIP works... in 10 minutes
How GZIP works... in 10 minutes
 
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2
 
Sistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidosSistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidos
 
Refactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 appsRefactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 apps
 
Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2
 
MidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsMidwestPHP Symfony2 Internals
MidwestPHP Symfony2 Internals
 
Symfony internals [english]
Symfony internals [english]Symfony internals [english]
Symfony internals [english]
 
DeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internalsDeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internals
 
Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5
 
Symfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoSymfony2: Optimización y rendimiento
Symfony2: Optimización y rendimiento
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Presentacion Symfony2
Presentacion Symfony2Presentacion Symfony2
Presentacion Symfony2
 

Recently uploaded

Novedades del mejor escritorio: Plasma 6 de KDE - Por Baltasar Ortega
Novedades del mejor escritorio: Plasma 6 de KDE - Por Baltasar OrtegaNovedades del mejor escritorio: Plasma 6 de KDE - Por Baltasar Ortega
Novedades del mejor escritorio: Plasma 6 de KDE - Por Baltasar OrtegaBaltasar Ortega
 
Trabajo de tecnologia.pdf .
Trabajo de tecnologia.pdf                         .Trabajo de tecnologia.pdf                         .
Trabajo de tecnologia.pdf .SebastinPrez67
 
El Libro de la Inteligencia Artificial (versión 13)
El Libro de la Inteligencia Artificial (versión 13)El Libro de la Inteligencia Artificial (versión 13)
El Libro de la Inteligencia Artificial (versión 13)Alfredo Vela Zancada
 
RESUMENES DE FUNCIONES DESARROLLO DE BLOG
RESUMENES DE FUNCIONES DESARROLLO DE BLOGRESUMENES DE FUNCIONES DESARROLLO DE BLOG
RESUMENES DE FUNCIONES DESARROLLO DE BLOGmarianhenao98
 
Texto Argumentativo (Basura Electronica)
Texto Argumentativo (Basura Electronica)Texto Argumentativo (Basura Electronica)
Texto Argumentativo (Basura Electronica)AlejandraCasallas7
 
carta combinada para empleados de una empresa
carta combinada para empleados de una empresacarta combinada para empleados de una empresa
carta combinada para empleados de una empresafspro99
 
CALCULADORA CIENTIFICA trabajo grupal 9-6.docx
CALCULADORA CIENTIFICA trabajo grupal 9-6.docxCALCULADORA CIENTIFICA trabajo grupal 9-6.docx
CALCULADORA CIENTIFICA trabajo grupal 9-6.docxzoecaicedosalazar
 
Basisschulung zum Datenschutz DE_SPA.pptx
Basisschulung zum Datenschutz  DE_SPA.pptxBasisschulung zum Datenschutz  DE_SPA.pptx
Basisschulung zum Datenschutz DE_SPA.pptxsergioagudo4
 
Texto Argumentativo (Basura Electronica)
Texto Argumentativo (Basura Electronica)Texto Argumentativo (Basura Electronica)
Texto Argumentativo (Basura Electronica)lucianavillotalozano
 
Trabajo de tecnología excel avanzado:métodos estadísticos
Trabajo de tecnología excel avanzado:métodos estadísticosTrabajo de tecnología excel avanzado:métodos estadísticos
Trabajo de tecnología excel avanzado:métodos estadísticosJuanCamilomurillo2
 
Segunda_P_Wahrnehmung der Betroffenenrechte DE_SPA.pptx
Segunda_P_Wahrnehmung der Betroffenenrechte DE_SPA.pptxSegunda_P_Wahrnehmung der Betroffenenrechte DE_SPA.pptx
Segunda_P_Wahrnehmung der Betroffenenrechte DE_SPA.pptxsergioagudo4
 
Texto Argumentativo (Basura Electronica).docx
Texto Argumentativo (Basura Electronica).docxTexto Argumentativo (Basura Electronica).docx
Texto Argumentativo (Basura Electronica).docxlucianavillotalozano
 
Estadistica , excel avanzado estudios estadisticos
Estadistica , excel avanzado  estudios estadisticosEstadistica , excel avanzado  estudios estadisticos
Estadistica , excel avanzado estudios estadisticosElizabethAcostaQuinc
 
BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS.pdf
BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS.pdfBLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS.pdf
BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS.pdfssuser337a5e
 
Tecnología 2024 11-2 .pdf.......................
Tecnología 2024  11-2 .pdf.......................Tecnología 2024  11-2 .pdf.......................
Tecnología 2024 11-2 .pdf.......................GabrielHernndez206156
 
Excel avanzado y métodos estadísticos.pdf
Excel avanzado y métodos estadísticos.pdfExcel avanzado y métodos estadísticos.pdf
Excel avanzado y métodos estadísticos.pdfSOFIAACOSTAESCOBAR
 
Excel avanzado y métodos estadísticos.pdf
Excel avanzado y métodos estadísticos.pdfExcel avanzado y métodos estadísticos.pdf
Excel avanzado y métodos estadísticos.pdfNicolleAndrade7
 
INFORME DE LA ACTIVIDAD GRUPAL; EXCEL AVANZADO Y MÉTODOS ESTADÍSTICO.pdf
INFORME DE LA  ACTIVIDAD GRUPAL; EXCEL AVANZADO Y MÉTODOS ESTADÍSTICO.pdfINFORME DE LA  ACTIVIDAD GRUPAL; EXCEL AVANZADO Y MÉTODOS ESTADÍSTICO.pdf
INFORME DE LA ACTIVIDAD GRUPAL; EXCEL AVANZADO Y MÉTODOS ESTADÍSTICO.pdfGabrielHernndez206156
 
Lista de selección dinámica desde MySQL hacia PHP (con PDO)
Lista de selección dinámica desde MySQL hacia PHP (con PDO)Lista de selección dinámica desde MySQL hacia PHP (con PDO)
Lista de selección dinámica desde MySQL hacia PHP (con PDO)ChristianRivera122452
 
¿Cómo preguntar a la IA?_ Universitat Oberta de Catalunya
¿Cómo preguntar a la IA?_ Universitat Oberta de Catalunya¿Cómo preguntar a la IA?_ Universitat Oberta de Catalunya
¿Cómo preguntar a la IA?_ Universitat Oberta de CatalunyaRichard Canabate
 

Recently uploaded (20)

Novedades del mejor escritorio: Plasma 6 de KDE - Por Baltasar Ortega
Novedades del mejor escritorio: Plasma 6 de KDE - Por Baltasar OrtegaNovedades del mejor escritorio: Plasma 6 de KDE - Por Baltasar Ortega
Novedades del mejor escritorio: Plasma 6 de KDE - Por Baltasar Ortega
 
Trabajo de tecnologia.pdf .
Trabajo de tecnologia.pdf                         .Trabajo de tecnologia.pdf                         .
Trabajo de tecnologia.pdf .
 
El Libro de la Inteligencia Artificial (versión 13)
El Libro de la Inteligencia Artificial (versión 13)El Libro de la Inteligencia Artificial (versión 13)
El Libro de la Inteligencia Artificial (versión 13)
 
RESUMENES DE FUNCIONES DESARROLLO DE BLOG
RESUMENES DE FUNCIONES DESARROLLO DE BLOGRESUMENES DE FUNCIONES DESARROLLO DE BLOG
RESUMENES DE FUNCIONES DESARROLLO DE BLOG
 
Texto Argumentativo (Basura Electronica)
Texto Argumentativo (Basura Electronica)Texto Argumentativo (Basura Electronica)
Texto Argumentativo (Basura Electronica)
 
carta combinada para empleados de una empresa
carta combinada para empleados de una empresacarta combinada para empleados de una empresa
carta combinada para empleados de una empresa
 
CALCULADORA CIENTIFICA trabajo grupal 9-6.docx
CALCULADORA CIENTIFICA trabajo grupal 9-6.docxCALCULADORA CIENTIFICA trabajo grupal 9-6.docx
CALCULADORA CIENTIFICA trabajo grupal 9-6.docx
 
Basisschulung zum Datenschutz DE_SPA.pptx
Basisschulung zum Datenschutz  DE_SPA.pptxBasisschulung zum Datenschutz  DE_SPA.pptx
Basisschulung zum Datenschutz DE_SPA.pptx
 
Texto Argumentativo (Basura Electronica)
Texto Argumentativo (Basura Electronica)Texto Argumentativo (Basura Electronica)
Texto Argumentativo (Basura Electronica)
 
Trabajo de tecnología excel avanzado:métodos estadísticos
Trabajo de tecnología excel avanzado:métodos estadísticosTrabajo de tecnología excel avanzado:métodos estadísticos
Trabajo de tecnología excel avanzado:métodos estadísticos
 
Segunda_P_Wahrnehmung der Betroffenenrechte DE_SPA.pptx
Segunda_P_Wahrnehmung der Betroffenenrechte DE_SPA.pptxSegunda_P_Wahrnehmung der Betroffenenrechte DE_SPA.pptx
Segunda_P_Wahrnehmung der Betroffenenrechte DE_SPA.pptx
 
Texto Argumentativo (Basura Electronica).docx
Texto Argumentativo (Basura Electronica).docxTexto Argumentativo (Basura Electronica).docx
Texto Argumentativo (Basura Electronica).docx
 
Estadistica , excel avanzado estudios estadisticos
Estadistica , excel avanzado  estudios estadisticosEstadistica , excel avanzado  estudios estadisticos
Estadistica , excel avanzado estudios estadisticos
 
BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS.pdf
BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS.pdfBLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS.pdf
BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS.pdf
 
Tecnología 2024 11-2 .pdf.......................
Tecnología 2024  11-2 .pdf.......................Tecnología 2024  11-2 .pdf.......................
Tecnología 2024 11-2 .pdf.......................
 
Excel avanzado y métodos estadísticos.pdf
Excel avanzado y métodos estadísticos.pdfExcel avanzado y métodos estadísticos.pdf
Excel avanzado y métodos estadísticos.pdf
 
Excel avanzado y métodos estadísticos.pdf
Excel avanzado y métodos estadísticos.pdfExcel avanzado y métodos estadísticos.pdf
Excel avanzado y métodos estadísticos.pdf
 
INFORME DE LA ACTIVIDAD GRUPAL; EXCEL AVANZADO Y MÉTODOS ESTADÍSTICO.pdf
INFORME DE LA  ACTIVIDAD GRUPAL; EXCEL AVANZADO Y MÉTODOS ESTADÍSTICO.pdfINFORME DE LA  ACTIVIDAD GRUPAL; EXCEL AVANZADO Y MÉTODOS ESTADÍSTICO.pdf
INFORME DE LA ACTIVIDAD GRUPAL; EXCEL AVANZADO Y MÉTODOS ESTADÍSTICO.pdf
 
Lista de selección dinámica desde MySQL hacia PHP (con PDO)
Lista de selección dinámica desde MySQL hacia PHP (con PDO)Lista de selección dinámica desde MySQL hacia PHP (con PDO)
Lista de selección dinámica desde MySQL hacia PHP (con PDO)
 
¿Cómo preguntar a la IA?_ Universitat Oberta de Catalunya
¿Cómo preguntar a la IA?_ Universitat Oberta de Catalunya¿Cómo preguntar a la IA?_ Universitat Oberta de Catalunya
¿Cómo preguntar a la IA?_ Universitat Oberta de Catalunya
 

Symfony en Drupal 8 - DrupalCamp Spain