Componentes           El arma secreta de Symfony#sf2Vigo                          Javier López | @loalf
Javier LópezNací en Córdoba, España.Vivo en Londres, Reino Unido.Trabajo en IPC Media (http://ipcmedia.com).Escribo (a vec...
Los componentes
Son un conjunto de librerías autónomas,desacopladas y complementarias que resuelvenproblemas comunes del desarrollo web
21 ComponentesBrowserkit     EventDispatcher         SecurityClassLoader        Routing          HttpFoundation  Finder   ...
21 ComponentesBrowserkit     EventDispatcher         SecurityClassLoader        Routing          HttpFoundation  Finder   ...
Instalación
mkdir ComponentPlaygroundcd ComponentPlaygroundmkdir vendorcd vendorgit clone https://github.com/symfony/symfony
descargar
autoload.php
autoload.php<?php
autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;
autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use Symfo...
autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use Symfo...
autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use Symfo...
autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use Symfo...
autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use Symfo...
autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use Symfo...
ejemplo.php
ejemplo.php<?php
ejemplo.php<?phprequire_once autoload.php;
ejemplo.php<?phprequire_once autoload.php;/*
ejemplo.php<?phprequire_once autoload.php;/* * Código del ejemplo
ejemplo.php<?phprequire_once autoload.php;/* * Código del ejemplo */
ejemplo.php<?phprequire_once autoload.php;/* * Código del ejemplo */> php ejemplo.php
Yaml
Parsea y genera archivos yml
parseando archivos YAML#example.ymldescripcion: “Usuarios de symfony”usuarios:  javi:    nombre: “Javi”    apellidos: “Lóp...
parseando archivos YAML                                     use SymfonyComponentYamlYaml;#example.ymldescripcion: “Usuario...
parseando archivos YAML                                     use SymfonyComponentYamlYaml;#example.yml                     ...
parseando archivos YAML                                     use SymfonyComponentYamlYaml;#example.yml                     ...
parseando archivos YAML                                     use SymfonyComponentYamlYaml;#example.yml                     ...
parseando archivos YAML                                     use SymfonyComponentYamlYaml;#example.yml                     ...
parseando archivos YAML                                     use SymfonyComponentYamlYaml;#example.yml                     ...
parseando archivos YAML                                     use SymfonyComponentYamlYaml;#example.yml                     ...
parseando archivos YAML                                     use SymfonyComponentYamlYaml;#example.yml                     ...
parseando archivos YAML                                     use SymfonyComponentYamlYaml;#example.yml                     ...
parseando archivos YAML                                     use SymfonyComponentYamlYaml;#example.yml                     ...
generando archivos YAML
generando archivos YAMLuse SymfonyComponentYamlYaml;
generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";
generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array(
generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array(  ...
generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array(  ...
generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array(  ...
generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array(  ...
generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array(  ...
generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array(  ...
generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array(  ...
generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array(  ...
generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";                            ...
YAML & PHP#example.ymlgenerado: <?php echo date(‘d-m-Y’); ?>descripcion: “Usuarios de symfony”usuarios:  javi:    nombre: ...
YAML & PHP#example.ymlgenerado: <?php echo date(‘d-m-Y’); ?>   use SymfonyComponentYamlYaml;descripcion: “Usuarios de symf...
Finder
Herramienta para encontrar archivos y directorios
buscando archivos por nombre
buscando archivos por nombreuse SymfonyComponentFinderFinder;
buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create()
buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create()          ->name("*.php")
buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create()          ->name("*.php")          -...
buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create()          ->name("*.php")          -...
buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create()          ->name("*.php")          -...
buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create()          ->name("*.php")          -...
buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create()          ->name("*.php")          -...
buscando archivos por nombre  use SymfonyComponentFinderFinder;  $files = Finder::create()                    ->name("*.ph...
buscando archivos por tamaño
buscando archivos por tamañouse SymfonyComponentFinderFinder;
buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create()
buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create()          ->size("> 10k")
buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create()          ->size("> 10k")          -...
buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create()          ->size("> 10k")          -...
buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create()          ->size("> 10k")          -...
buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create()          ->size("> 10k")          -...
buscando archivos por fecha
buscando archivos por fechause SymfonyComponentFinderFinder;
buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create()
buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create()          ->date("since yesterday")
buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create()          ->date("since yesterday")  ...
buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create()          ->date("since yesterday")  ...
buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create()          ->date("since yesterday")  ...
buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create()          ->date("since yesterday")  ...
buscando archivos por fecha  use SymfonyComponentFinderFinder;  $files = Finder::create()                  ->date("since y...
fijando el nivel de profundidad
fijando el nivel de profundidaduse SymfonyComponentFinderFinder;
fijando el nivel de profundidaduse SymfonyComponentFinderFinder;$files = Finder::create()
fijando el nivel de profundidaduse SymfonyComponentFinderFinder;$files = Finder::create()          ->depth(0)
fijando el nivel de profundidaduse SymfonyComponentFinderFinder;$files = Finder::create()          ->depth(0)          ->de...
fijando el nivel de profundidaduse SymfonyComponentFinderFinder;$files = Finder::create()          ->depth(0)          ->de...
fijando el nivel de profundidaduse SymfonyComponentFinderFinder;$files = Finder::create()          ->depth(0)          ->de...
buscando sólo archivos
buscando sólo archivosuse SymfonyComponentFinderFinder;$files = Finder::create()          ->files()          ->in(__DIR__);
buscando sólo directorios
buscando sólo directoriosuse SymfonyComponentFinderFinder;$files = Finder::create()          ->directories()          ->in...
obteniendo un resultado ordenado
obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;
obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create()
obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create()          ->sortByName()
obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create()          ->sortByName()        ...
obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create()          ->sortByName()        ...
obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create()          ->sortByName()        ...
obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create()          ->sortByName()        ...
obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create()          ->sortByName()        ...
obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create()          ->sortByName()        ...
obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create()          ->sortByName()        ...
archivos php en la carpeta raíz del proyecto
archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;
archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;$files = Finder::create()
archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;$files = Finder::create()          ->files()
archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;$files = Finder::create()          ->files() ...
archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;$files = Finder::create()          ->files() ...
archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;$files = Finder::create()          ->files() ...
imágenes en un contener Amazon S3
imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);
imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");
imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");
imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");$files =...
imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");$files =...
imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");$files =...
imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");$files =...
imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");$files =...
Process
Facilita la ejecución de comandos del sistema
¿está Twitter online?
¿está Twitter online?use SymfonyComponentProcessProcess;
¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);
¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();
¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();if($...
¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();if($...
¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();if($...
¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();if($...
¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();if($...
ping -c 4 twitter.com
calculando tiempos medios de respuesta
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccess...
mostrando sólo los tiempos
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(f...
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(f...
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(f...
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(f...
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(f...
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(f...
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(f...
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(f...
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(f...
mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(f...
DomCrawler
Facilita la extracción de información de objetos DOM
Búsqueda en Twitter
Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;
Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri    = http://search.twitter.com/search.atom?q=sf2vigo;
Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri     = http://search.twitter.com/search.atom?q=sf2vigo;$crawl...
Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri     = http://search.twitter.com/search.atom?q=sf2vigo;$crawl...
Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri     = http://search.twitter.com/search.atom?q=sf2vigo;$crawl...
Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri     = http://search.twitter.com/search.atom?q=sf2vigo;$crawl...
Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri     = http://search.twitter.com/search.atom?q=sf2vigo;$crawl...
Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri       = http://search.twitter.com/search.atom?q=sf2vigo;$cra...
Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri       = http://search.twitter.com/search.atom?q=sf2vigo;$cra...
Enlaces del blog de symfony.com
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri    = http://symfony.com/blog;
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri     = http://symfony.com/blog;$content = file_ge...
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri     = http://symfony.com/blog;$content = file_ge...
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri     = http://symfony.com/blog;$content = file_ge...
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri     = http://symfony.com/blog;$content = file_ge...
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri     = http://symfony.com/blog;$content = file_ge...
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri       = http://symfony.com/blog;$content = file_...
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri       = http://symfony.com/blog;$content = file_...
CssSelector
Selectores CSS => Expresiones XPath
Convirtiendo CSS a XPath
Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;
Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);
Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/*
Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * desc...
Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * desc...
Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * desc...
Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * desc...
Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * desc...
Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * desc...
Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * desc...
Enlaces del blog de symfony.com
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri    = http://symfony.com/blog;
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri     = http://symfony.com/blog;$content = file_ge...
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri     = http://symfony.com/blog;$content = file_ge...
Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri     = http://symfony.com/blog;$content = file_ge...
Validator
Lleva a cabo tareas de validación
Validando que un valor sea no nulo
Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;
Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraints...
Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraints...
Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraints...
Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraints...
Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraints...
Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraints...
Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraints...
24 Validadores Blank          Max           DateNotBlank         Min          Time  Null           Url        DateTimeNotN...
Usando la clase Validator
Usando la clase Validatoruse SymfonyComponentValidatorValidator;
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Validando un objeto (PHP)class Person{    public $name;    public $age;}
Validando un objeto (PHP)class Person{    public $name;    public $age;}$name no puede ser una cadena vacía$age deberán se...
Validando un objeto (PHP)
Validando un objeto (PHP)use SymfonyComponentValidatorValidator;
Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;
Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;us...
Validando un objeto (PHP)use SymfonyComponentValidatorMappingClassMetadata;use SymfonyComponentValidatorConstraint as Asse...
Validando un objeto (YAML)class Person{    public $name;    public $age;}
Validando un objeto (YAML)class Person{    public $name;    public $age;}$name no puede ser una cadena vacía$age deberán s...
Validando un objeto (YAML)# validate.ymlPerson:  properties:    name:      - NotBlank : ~    age:      - Min: 18      - Ma...
Validando un objeto (YAML)
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;u...
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;u...
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;u...
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;u...
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;u...
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;u...
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;u...
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;u...
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;u...
Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;u...
Console
Facilita la creación de tareas repetitivas
La consola más sencilla
La consola más sencilla// console.php
La consola más sencilla// console.phpuse SymfonyComponentConsoleApplication;
La consola más sencilla// console.phpuse SymfonyComponentConsoleApplication;$console = new Application();
La consola más sencilla// console.phpuse SymfonyComponentConsoleApplication;$console = new Application();$console->run();
php console.php
php console.php help
php console.php help list
Hola mundo ... para consolas
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console ...
Hay una manera mejor de hacerlo, Command
Creando un nuevo comando
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class Hell...
Creando un nuevo comando
Creando un nuevo comandouse SymfonyComponentConsoleApplication;
Creando un nuevo comandouse SymfonyComponentConsoleApplication;$console = new Application();
Creando un nuevo comandouse SymfonyComponentConsoleApplication;$console = new Application();$console->add(new HelloCommand...
Creando un nuevo comandouse SymfonyComponentConsoleApplication;$console = new Application();$console->add(new HelloCommand...
Gracias@loalf          Créditos: http://www.flickr.com/photos/normalityrelief/3075723695/
Upcoming SlideShare
Loading in …5
×

Slides componentes

1,321 views

Published on

symfony2, components, yaml, autoload, console, template, validator, process, cssselector, domcrawler

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,321
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
28
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • En esta primera charla del d&amp;#xED;a me gustar&amp;#xED;a cumplir dos objetivos\n1. Instalar y configurar el framework\n2. (M&amp;#xE1;s importante) Entender qu&amp;#xE9; es symfony y todo lo que lo rodea\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Slides componentes

    1. 1. Componentes El arma secreta de Symfony#sf2Vigo Javier López | @loalf
    2. 2. Javier LópezNací en Córdoba, España.Vivo en Londres, Reino Unido.Trabajo en IPC Media (http://ipcmedia.com).Escribo (a veces) en mi blog (http://www.loalf.com).Twitteo como @loalf ... ¿quiéres saber más? http://www.linkedin.com/in/loalf
    3. 3. Los componentes
    4. 4. Son un conjunto de librerías autónomas,desacopladas y complementarias que resuelvenproblemas comunes del desarrollo web
    5. 5. 21 ComponentesBrowserkit EventDispatcher SecurityClassLoader Routing HttpFoundation Finder DependencyInjection Config Console CssSelector Locale Form DomCrawler HttpKernel Serializer Process Templating Yaml Validator Translation
    6. 6. 21 ComponentesBrowserkit EventDispatcher SecurityClassLoader Routing HttpFoundation Finder DependencyInjection Config Console CssSelector Locale Form DomCrawler HttpKernel Serializer Process Templating Yaml Validator Translation
    7. 7. Instalación
    8. 8. mkdir ComponentPlaygroundcd ComponentPlaygroundmkdir vendorcd vendorgit clone https://github.com/symfony/symfony
    9. 9. descargar
    10. 10. autoload.php
    11. 11. autoload.php<?php
    12. 12. autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;
    13. 13. autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use SymfonyComponentClassLoaderUniversalClassLoader;
    14. 14. autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use SymfonyComponentClassLoaderUniversalClassLoader;$loader = new UniversalClassLoader();
    15. 15. autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use SymfonyComponentClassLoaderUniversalClassLoader;$loader = new UniversalClassLoader();$loader->registerNamespaces(array(
    16. 16. autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use SymfonyComponentClassLoaderUniversalClassLoader;$loader = new UniversalClassLoader();$loader->registerNamespaces(array( Symfony => __DIR__./vendor/symfony/src,
    17. 17. autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use SymfonyComponentClassLoaderUniversalClassLoader;$loader = new UniversalClassLoader();$loader->registerNamespaces(array( Symfony => __DIR__./vendor/symfony/src,));
    18. 18. autoload.php<?phprequire_once __DIR__./vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php;use SymfonyComponentClassLoaderUniversalClassLoader;$loader = new UniversalClassLoader();$loader->registerNamespaces(array( Symfony => __DIR__./vendor/symfony/src,));$loader->register();
    19. 19. ejemplo.php
    20. 20. ejemplo.php<?php
    21. 21. ejemplo.php<?phprequire_once autoload.php;
    22. 22. ejemplo.php<?phprequire_once autoload.php;/*
    23. 23. ejemplo.php<?phprequire_once autoload.php;/* * Código del ejemplo
    24. 24. ejemplo.php<?phprequire_once autoload.php;/* * Código del ejemplo */
    25. 25. ejemplo.php<?phprequire_once autoload.php;/* * Código del ejemplo */> php ejemplo.php
    26. 26. Yaml
    27. 27. Parsea y genera archivos yml
    28. 28. parseando archivos YAML#example.ymldescripcion: “Usuarios de symfony”usuarios: javi: nombre: “Javi” apellidos: “López” raul: nombre: “Raúl” apellidos: “Fraile”
    29. 29. parseando archivos YAML use SymfonyComponentYamlYaml;#example.ymldescripcion: “Usuarios de symfony”usuarios: javi: nombre: “Javi” apellidos: “López” raul: nombre: “Raúl” apellidos: “Fraile”
    30. 30. parseando archivos YAML use SymfonyComponentYamlYaml;#example.yml $data = Yaml::parse(example.yml);descripcion: “Usuarios de symfony”usuarios: javi: nombre: “Javi” apellidos: “López” raul: nombre: “Raúl” apellidos: “Fraile”
    31. 31. parseando archivos YAML use SymfonyComponentYamlYaml;#example.yml $data = Yaml::parse(example.yml);descripcion: “Usuarios de symfony”usuarios: print $data[descripcion]; javi: nombre: “Javi” apellidos: “López” raul: nombre: “Raúl” apellidos: “Fraile”
    32. 32. parseando archivos YAML use SymfonyComponentYamlYaml;#example.yml $data = Yaml::parse(example.yml);descripcion: “Usuarios de symfony”usuarios: print $data[descripcion]; javi: nombre: “Javi” foreach( $data[usuarios] as $usuario) apellidos: “López” raul: nombre: “Raúl” apellidos: “Fraile”
    33. 33. parseando archivos YAML use SymfonyComponentYamlYaml;#example.yml $data = Yaml::parse(example.yml);descripcion: “Usuarios de symfony”usuarios: print $data[descripcion]; javi: nombre: “Javi” foreach( $data[usuarios] as $usuario) apellidos: “López” { raul: nombre: “Raúl” apellidos: “Fraile”
    34. 34. parseando archivos YAML use SymfonyComponentYamlYaml;#example.yml $data = Yaml::parse(example.yml);descripcion: “Usuarios de symfony”usuarios: print $data[descripcion]; javi: nombre: “Javi” foreach( $data[usuarios] as $usuario) apellidos: “López” { raul: print $usuario[nombre] nombre: “Raúl” apellidos: “Fraile”
    35. 35. parseando archivos YAML use SymfonyComponentYamlYaml;#example.yml $data = Yaml::parse(example.yml);descripcion: “Usuarios de symfony”usuarios: print $data[descripcion]; javi: nombre: “Javi” foreach( $data[usuarios] as $usuario) apellidos: “López” { raul: print $usuario[nombre] nombre: “Raúl” . . apellidos: “Fraile”
    36. 36. parseando archivos YAML use SymfonyComponentYamlYaml;#example.yml $data = Yaml::parse(example.yml);descripcion: “Usuarios de symfony”usuarios: print $data[descripcion]; javi: nombre: “Javi” foreach( $data[usuarios] as $usuario) apellidos: “López” { raul: print $usuario[nombre] nombre: “Raúl” . . apellidos: “Fraile” $usuario[apellidos];
    37. 37. parseando archivos YAML use SymfonyComponentYamlYaml;#example.yml $data = Yaml::parse(example.yml);descripcion: “Usuarios de symfony”usuarios: print $data[descripcion]; javi: nombre: “Javi” foreach( $data[usuarios] as $usuario) apellidos: “López” { raul: print $usuario[nombre] nombre: “Raúl” . . apellidos: “Fraile” $usuario[apellidos]; }
    38. 38. parseando archivos YAML use SymfonyComponentYamlYaml;#example.yml $data = Yaml::parse(example.yml);descripcion: “Usuarios de symfony”usuarios: print $data[descripcion]; - nombre: “Javi” foreach( $data[usuarios] as $usuario) apellidos: “López” { - print $usuario[nombre] nombre: “Raúl” . . apellidos: “Fraile” $usuario[apellidos]; }
    39. 39. generando archivos YAML
    40. 40. generando archivos YAMLuse SymfonyComponentYamlYaml;
    41. 41. generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";
    42. 42. generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array(
    43. 43. generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array( nombre => Javi,
    44. 44. generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array( nombre => Javi, apellidos => Lopez
    45. 45. generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array( nombre => Javi, apellidos => Lopez);
    46. 46. generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array( nombre => Javi, apellidos => Lopez);$data[usuarios][] = array(
    47. 47. generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array( nombre => Javi, apellidos => Lopez);$data[usuarios][] = array( nombre => Raul,
    48. 48. generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array( nombre => Javi, apellidos => Lopez);$data[usuarios][] = array( nombre => Raul, apellidos => Fraile
    49. 49. generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array( nombre => Javi, apellidos => Lopez);$data[usuarios][] = array( nombre => Raul, apellidos => Fraile);
    50. 50. generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony";$data[usuarios][] = array( nombre => Javi, apellidos => Lopez);$data[usuarios][] = array( nombre => Raul, apellidos => Fraile);print Yaml::dump($data);
    51. 51. generando archivos YAMLuse SymfonyComponentYamlYaml;$data[descripcion] = "Usuarios desymfony"; descripcion: “Usuarios de symfony”$data[usuarios][] = array( usuarios: nombre => Javi, 0: apellidos => Lopez nombre: “Javi”); apellidos: “López” 1:$data[usuarios][] = array( nombre: “Raúl” nombre => Raul, apellidos: “Fraile” apellidos => Fraile);print Yaml::dump($data);
    52. 52. YAML & PHP#example.ymlgenerado: <?php echo date(‘d-m-Y’); ?>descripcion: “Usuarios de symfony”usuarios: javi: nombre: “Javi” apellidos: “López” raul: nombre: “Raúl” apellidos: “Fraile”
    53. 53. YAML & PHP#example.ymlgenerado: <?php echo date(‘d-m-Y’); ?> use SymfonyComponentYamlYaml;descripcion: “Usuarios de symfony”usuarios: Yaml::enablePhpParsing(); javi: nombre: “Javi” $data = Yaml::parse(example.yml); apellidos: “López” raul: print $data[generado]; nombre: “Raúl” apellidos: “Fraile”
    54. 54. Finder
    55. 55. Herramienta para encontrar archivos y directorios
    56. 56. buscando archivos por nombre
    57. 57. buscando archivos por nombreuse SymfonyComponentFinderFinder;
    58. 58. buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create()
    59. 59. buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create() ->name("*.php")
    60. 60. buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create() ->name("*.php") ->name("*.{php,yml}")
    61. 61. buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create() ->name("*.php") ->name("*.{php,yml}") ->name("/.(php|yml)$/")
    62. 62. buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create() ->name("*.php") ->name("*.{php,yml}") ->name("/.(php|yml)$/") ->name("/^w{3,10}$/")
    63. 63. buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create() ->name("*.php") ->name("*.{php,yml}") ->name("/.(php|yml)$/") ->name("/^w{3,10}$/") ->name("foo.php")
    64. 64. buscando archivos por nombreuse SymfonyComponentFinderFinder;$files = Finder::create() ->name("*.php") ->name("*.{php,yml}") ->name("/.(php|yml)$/") ->name("/^w{3,10}$/") ->name("foo.php") ->in(__DIR__);
    65. 65. buscando archivos por nombre use SymfonyComponentFinderFinder; $files = Finder::create() ->name("*.php") ->name("*.{php,yml}") ->name("/.(php|yml)$/") ->name("/^w{3,10}$/") ->name("foo.php") ->in(__DIR__);Referencia sobre Patrones Glob: http://cowburn.info/2010/04/30/glob-patterns/
    66. 66. buscando archivos por tamaño
    67. 67. buscando archivos por tamañouse SymfonyComponentFinderFinder;
    68. 68. buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create()
    69. 69. buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create() ->size("> 10k")
    70. 70. buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create() ->size("> 10k") ->size("<= 4mi")
    71. 71. buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create() ->size("> 10k") ->size("<= 4mi") ->size("2gi")
    72. 72. buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create() ->size("> 10k") ->size("<= 4mi") ->size("2gi") ->in(__DIR__);
    73. 73. buscando archivos por tamañouse SymfonyComponentFinderFinder;$files = Finder::create() ->size("> 10k") ->size("<= 4mi") ->size("2gi") ->in(__DIR__); k = 1000 ki = 1024 m = 1000^2 mi = 1024^2 g = 1000^3 gi = 1024^3
    74. 74. buscando archivos por fecha
    75. 75. buscando archivos por fechause SymfonyComponentFinderFinder;
    76. 76. buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create()
    77. 77. buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create() ->date("since yesterday")
    78. 78. buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create() ->date("since yesterday") ->date("until 2 days ago")
    79. 79. buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create() ->date("since yesterday") ->date("until 2 days ago") ->date("> now - 2 hours")
    80. 80. buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create() ->date("since yesterday") ->date("until 2 days ago") ->date("> now - 2 hours") ->date(">= 2005-10-15 ")
    81. 81. buscando archivos por fechause SymfonyComponentFinderFinder;$files = Finder::create() ->date("since yesterday") ->date("until 2 days ago") ->date("> now - 2 hours") ->date(">= 2005-10-15 ") ->in(__DIR__);
    82. 82. buscando archivos por fecha use SymfonyComponentFinderFinder; $files = Finder::create() ->date("since yesterday") ->date("until 2 days ago") ->date("> now - 2 hours") ->date(">= 2005-10-15 ") ->in(__DIR__);Parámetro es cualquier argumento válido para strtotime()
    83. 83. fijando el nivel de profundidad
    84. 84. fijando el nivel de profundidaduse SymfonyComponentFinderFinder;
    85. 85. fijando el nivel de profundidaduse SymfonyComponentFinderFinder;$files = Finder::create()
    86. 86. fijando el nivel de profundidaduse SymfonyComponentFinderFinder;$files = Finder::create() ->depth(0)
    87. 87. fijando el nivel de profundidaduse SymfonyComponentFinderFinder;$files = Finder::create() ->depth(0) ->depth(>1)
    88. 88. fijando el nivel de profundidaduse SymfonyComponentFinderFinder;$files = Finder::create() ->depth(0) ->depth(>1) ->depth(<3)
    89. 89. fijando el nivel de profundidaduse SymfonyComponentFinderFinder;$files = Finder::create() ->depth(0) ->depth(>1) ->depth(<3) ->in(__DIR__);
    90. 90. buscando sólo archivos
    91. 91. buscando sólo archivosuse SymfonyComponentFinderFinder;$files = Finder::create() ->files() ->in(__DIR__);
    92. 92. buscando sólo directorios
    93. 93. buscando sólo directoriosuse SymfonyComponentFinderFinder;$files = Finder::create() ->directories() ->in(__DIR__);
    94. 94. obteniendo un resultado ordenado
    95. 95. obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;
    96. 96. obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create()
    97. 97. obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create() ->sortByName()
    98. 98. obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create() ->sortByName() ->sortByType()
    99. 99. obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create() ->sortByName() ->sortByType() ->sort(
    100. 100. obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create() ->sortByName() ->sortByType() ->sort( function(SplFileInfo $file1, SplFileInfo $file2){
    101. 101. obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create() ->sortByName() ->sortByType() ->sort( function(SplFileInfo $file1, SplFileInfo $file2){ return $file1->getSize() > $file2->getSize();
    102. 102. obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create() ->sortByName() ->sortByType() ->sort( function(SplFileInfo $file1, SplFileInfo $file2){ return $file1->getSize() > $file2->getSize(); }
    103. 103. obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create() ->sortByName() ->sortByType() ->sort( function(SplFileInfo $file1, SplFileInfo $file2){ return $file1->getSize() > $file2->getSize(); } )
    104. 104. obteniendo un resultado ordenadouse SymfonyComponentFinderFinder;$files = Finder::create() ->sortByName() ->sortByType() ->sort( function(SplFileInfo $file1, SplFileInfo $file2){ return $file1->getSize() > $file2->getSize(); } ) ->in(__DIR__);
    105. 105. archivos php en la carpeta raíz del proyecto
    106. 106. archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;
    107. 107. archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;$files = Finder::create()
    108. 108. archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;$files = Finder::create() ->files()
    109. 109. archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;$files = Finder::create() ->files() ->depth(0)
    110. 110. archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;$files = Finder::create() ->files() ->depth(0) ->name("*.php")
    111. 111. archivos php en la carpeta raíz del proyectouse SymfonyComponentFinderFinder;$files = Finder::create() ->files() ->depth(0) ->name("*.php") ->in(__DIR__);
    112. 112. imágenes en un contener Amazon S3
    113. 113. imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);
    114. 114. imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");
    115. 115. imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");
    116. 116. imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");$files = Finder::create()
    117. 117. imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");$files = Finder::create() ->name(*.{jpg,jpeg,png,gif})
    118. 118. imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");$files = Finder::create() ->name(*.{jpg,jpeg,png,gif}) ->size(< 100K)
    119. 119. imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");$files = Finder::create() ->name(*.{jpg,jpeg,png,gif}) ->size(< 100K) ->date(since 1 hour ago)
    120. 120. imágenes en un contener Amazon S3$s3 = new Zend_Service_Amazon_S3($key, $secret);$s3->registerStreamWrapper("s3");$files = Finder::create() ->name(*.{jpg,jpeg,png,gif}) ->size(< 100K) ->date(since 1 hour ago) ->in(s3://bucket-name);
    121. 121. Process
    122. 122. Facilita la ejecución de comandos del sistema
    123. 123. ¿está Twitter online?
    124. 124. ¿está Twitter online?use SymfonyComponentProcessProcess;
    125. 125. ¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);
    126. 126. ¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();
    127. 127. ¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();if($process->isSuccessful()){
    128. 128. ¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();if($process->isSuccessful()){ print "Twitter esta online";
    129. 129. ¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();if($process->isSuccessful()){ print "Twitter esta online";}else{
    130. 130. ¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();if($process->isSuccessful()){ print "Twitter esta online";}else{ print "Twitter esta offline";
    131. 131. ¿está Twitter online?use SymfonyComponentProcessProcess;$process = new Process(ping -c 1 twitter.com);$process->run();if($process->isSuccessful()){ print "Twitter esta online";}else{ print "Twitter esta offline";}
    132. 132. ping -c 4 twitter.com
    133. 133. calculando tiempos medios de respuesta
    134. 134. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);
    135. 135. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();
    136. 136. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful())
    137. 137. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful()){
    138. 138. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful()){ $output = $process->getOutput();
    139. 139. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful()){ $output = $process->getOutput();
    140. 140. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful()){ $output = $process->getOutput(); $pattern = /time=(d+.d+) ms/;
    141. 141. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful()){ $output = $process->getOutput(); $pattern = /time=(d+.d+) ms/; preg_match_all($pattern, $output, $matches);
    142. 142. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful()){ $output = $process->getOutput(); $pattern = /time=(d+.d+) ms/; preg_match_all($pattern, $output, $matches); $average = array_sum($matches[1])/count($matches[1]);
    143. 143. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful()){ $output = $process->getOutput(); $pattern = /time=(d+.d+) ms/; preg_match_all($pattern, $output, $matches); $average = array_sum($matches[1])/count($matches[1]);
    144. 144. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful()){ $output = $process->getOutput(); $pattern = /time=(d+.d+) ms/; preg_match_all($pattern, $output, $matches); $average = array_sum($matches[1])/count($matches[1]); printf("Avergage time=%.3f ms", $average);
    145. 145. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful()){ $output = $process->getOutput(); $pattern = /time=(d+.d+) ms/; preg_match_all($pattern, $output, $matches); $average = array_sum($matches[1])/count($matches[1]); printf("Avergage time=%.3f ms", $average);}else{
    146. 146. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful()){ $output = $process->getOutput(); $pattern = /time=(d+.d+) ms/; preg_match_all($pattern, $output, $matches); $average = array_sum($matches[1])/count($matches[1]); printf("Avergage time=%.3f ms", $average);}else{ print "Twitter está offline";
    147. 147. calculando tiempos medios de respuesta$process = new Process(ping -c 4 twitter.com);$process->run();if($process->isSuccessful()){ $output = $process->getOutput(); $pattern = /time=(d+.d+) ms/; preg_match_all($pattern, $output, $matches); $average = array_sum($matches[1])/count($matches[1]); printf("Avergage time=%.3f ms", $average);}else{ print "Twitter está offline";}
    148. 148. mostrando sólo los tiempos
    149. 149. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;
    150. 150. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);
    151. 151. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(function($type, $buffer) {
    152. 152. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(function($type, $buffer) { if(out === $type){
    153. 153. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(function($type, $buffer) { if(out === $type){ $pattern = /time=(d+.d+) ms/;
    154. 154. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(function($type, $buffer) { if(out === $type){ $pattern = /time=(d+.d+) ms/; if(preg_match_all($pattern, $buffer, $matches)){;
    155. 155. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(function($type, $buffer) { if(out === $type){ $pattern = /time=(d+.d+) ms/; if(preg_match_all($pattern, $buffer, $matches)){; print $matches[0][0]."n";
    156. 156. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(function($type, $buffer) { if(out === $type){ $pattern = /time=(d+.d+) ms/; if(preg_match_all($pattern, $buffer, $matches)){; print $matches[0][0]."n"; }
    157. 157. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(function($type, $buffer) { if(out === $type){ $pattern = /time=(d+.d+) ms/; if(preg_match_all($pattern, $buffer, $matches)){; print $matches[0][0]."n"; } }elseif( err === $type ){
    158. 158. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(function($type, $buffer) { if(out === $type){ $pattern = /time=(d+.d+) ms/; if(preg_match_all($pattern, $buffer, $matches)){; print $matches[0][0]."n"; } }elseif( err === $type ){ print "Twitter esta offline";
    159. 159. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(function($type, $buffer) { if(out === $type){ $pattern = /time=(d+.d+) ms/; if(preg_match_all($pattern, $buffer, $matches)){; print $matches[0][0]."n"; } }elseif( err === $type ){ print "Twitter esta offline"; }
    160. 160. mostrando sólo los tiemposuse SymfonyComponentProcessProcess;$process = new Process(ping -c 4 twitter.com);$process->run(function($type, $buffer) { if(out === $type){ $pattern = /time=(d+.d+) ms/; if(preg_match_all($pattern, $buffer, $matches)){; print $matches[0][0]."n"; } }elseif( err === $type ){ print "Twitter esta offline"; }});
    161. 161. DomCrawler
    162. 162. Facilita la extracción de información de objetos DOM
    163. 163. Búsqueda en Twitter
    164. 164. Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;
    165. 165. Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri = http://search.twitter.com/search.atom?q=sf2vigo;
    166. 166. Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri = http://search.twitter.com/search.atom?q=sf2vigo;$crawler = new Crawler();
    167. 167. Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri = http://search.twitter.com/search.atom?q=sf2vigo;$crawler = new Crawler();$content = file_get_contents($uri);
    168. 168. Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri = http://search.twitter.com/search.atom?q=sf2vigo;$crawler = new Crawler();$content = file_get_contents($uri);$crawler->addXmlContent($content);
    169. 169. Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri = http://search.twitter.com/search.atom?q=sf2vigo;$crawler = new Crawler();$content = file_get_contents($uri);$crawler->addXmlContent($content);foreach($crawler->filterXpath(//content) as $node)
    170. 170. Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri = http://search.twitter.com/search.atom?q=sf2vigo;$crawler = new Crawler();$content = file_get_contents($uri);$crawler->addXmlContent($content);foreach($crawler->filterXpath(//content) as $node){
    171. 171. Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri = http://search.twitter.com/search.atom?q=sf2vigo;$crawler = new Crawler();$content = file_get_contents($uri);$crawler->addXmlContent($content);foreach($crawler->filterXpath(//content) as $node){ print $node->nodeValue;
    172. 172. Búsqueda en Twitteruse SymfonyComponentDomCrawlerCrawler;$uri = http://search.twitter.com/search.atom?q=sf2vigo;$crawler = new Crawler();$content = file_get_contents($uri);$crawler->addXmlContent($content);foreach($crawler->filterXpath(//content) as $node){ print $node->nodeValue;}
    173. 173. Enlaces del blog de symfony.com
    174. 174. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;
    175. 175. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;
    176. 176. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;$content = file_get_contents($uri);
    177. 177. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;$content = file_get_contents($uri);$crawler = new Crawler($content, $uri);
    178. 178. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;$content = file_get_contents($uri);$crawler = new Crawler($content, $uri);$nodes = $crawler->filterXPath(//div[@class="box_article"]//a);
    179. 179. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;$content = file_get_contents($uri);$crawler = new Crawler($content, $uri);$nodes = $crawler->filterXPath(//div[@class="box_article"]//a);foreach($nodes->links() as $link)
    180. 180. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;$content = file_get_contents($uri);$crawler = new Crawler($content, $uri);$nodes = $crawler->filterXPath(//div[@class="box_article"]//a);foreach($nodes->links() as $link){
    181. 181. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;$content = file_get_contents($uri);$crawler = new Crawler($content, $uri);$nodes = $crawler->filterXPath(//div[@class="box_article"]//a);foreach($nodes->links() as $link){ print $link->getUri();
    182. 182. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;$content = file_get_contents($uri);$crawler = new Crawler($content, $uri);$nodes = $crawler->filterXPath(//div[@class="box_article"]//a);foreach($nodes->links() as $link){ print $link->getUri();}
    183. 183. CssSelector
    184. 184. Selectores CSS => Expresiones XPath
    185. 185. Convirtiendo CSS a XPath
    186. 186. Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;
    187. 187. Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);
    188. 188. Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/*
    189. 189. Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * descendant-or-self::div[
    190. 190. Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * descendant-or-self::div[ * contains(
    191. 191. Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * descendant-or-self::div[ * contains( * concat( , normalize- space(@class), ),
    192. 192. Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * descendant-or-self::div[ * contains( * concat( , normalize- space(@class), ), * box_article
    193. 193. Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * descendant-or-self::div[ * contains( * concat( , normalize- space(@class), ), * box_article * )
    194. 194. Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * descendant-or-self::div[ * contains( * concat( , normalize- space(@class), ), * box_article * ) * ]/descendant::a
    195. 195. Convirtiendo CSS a XPathuse SymfonyComponentCssSelectorCssSelector;print CssSelector::toXPath(div.box_article a);/* * descendant-or-self::div[ * contains( * concat( , normalize- space(@class), ), * box_article * ) * ]/descendant::a */
    196. 196. Enlaces del blog de symfony.com
    197. 197. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;
    198. 198. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;
    199. 199. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;$content = file_get_contents($uri);
    200. 200. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;$content = file_get_contents($uri);$crawler = new Crawler($content, $uri);
    201. 201. Enlaces del blog de symfony.comuse SymfonyComponentDomCrawlerCrawler;$uri = http://symfony.com/blog;$content = file_get_contents($uri);$crawler = new Crawler($content, $uri);$nodes = $crawler->filter(div.box_article a);
    202. 202. Validator
    203. 203. Lleva a cabo tareas de validación
    204. 204. Validando que un valor sea no nulo
    205. 205. Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;
    206. 206. Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraintsNotNullValidator;
    207. 207. Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraintsNotNullValidator;$validator = new NotNullValidator();
    208. 208. Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraintsNotNullValidator;$validator = new NotNullValidator();if(!$validator->isValid(null, new NotNull()))
    209. 209. Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraintsNotNullValidator;$validator = new NotNullValidator();if(!$validator->isValid(null, new NotNull())){
    210. 210. Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraintsNotNullValidator;$validator = new NotNullValidator();if(!$validator->isValid(null, new NotNull())){ print $validator->getMessageTemplate();
    211. 211. Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraintsNotNullValidator;$validator = new NotNullValidator();if(!$validator->isValid(null, new NotNull())){ print $validator->getMessageTemplate(); // "The value should not be null"
    212. 212. Validando que un valor sea no nulouse SymfonyComponentValidatorConstraintsNotNull;use SymfonyComponentValidatorConstraintsNotNullValidator;$validator = new NotNullValidator();if(!$validator->isValid(null, new NotNull())){ print $validator->getMessageTemplate(); // "The value should not be null"}
    213. 213. 24 Validadores Blank Max DateNotBlank Min Time Null Url DateTimeNotNull Email Locale True IP Language False File CountryChoice Image Collection Type Size Callback
    214. 214. Usando la clase Validator
    215. 215. Usando la clase Validatoruse SymfonyComponentValidatorValidator;
    216. 216. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;
    217. 217. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;
    218. 218. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;use SymfonyComponentValidatorConstraints as Asserts;
    219. 219. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;use SymfonyComponentValidatorConstraints as Asserts;$validator = new Validator(
    220. 220. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;use SymfonyComponentValidatorConstraints as Asserts;$validator = new Validator( new BlackholeMetadataFactory,
    221. 221. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;use SymfonyComponentValidatorConstraints as Asserts;$validator = new Validator( new BlackholeMetadataFactory, new ConstraintValidatorFactory
    222. 222. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;use SymfonyComponentValidatorConstraints as Asserts;$validator = new Validator( new BlackholeMetadataFactory, new ConstraintValidatorFactory);
    223. 223. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;use SymfonyComponentValidatorConstraints as Asserts;$validator = new Validator( new BlackholeMetadataFactory, new ConstraintValidatorFactory);$errors = $validator->validateValue(, new AssertsNotBlank());
    224. 224. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;use SymfonyComponentValidatorConstraints as Asserts;$validator = new Validator( new BlackholeMetadataFactory, new ConstraintValidatorFactory);$errors = $validator->validateValue(, new AssertsNotBlank());if($errors->count())
    225. 225. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;use SymfonyComponentValidatorConstraints as Asserts;$validator = new Validator( new BlackholeMetadataFactory, new ConstraintValidatorFactory);$errors = $validator->validateValue(, new AssertsNotBlank());if($errors->count()){
    226. 226. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;use SymfonyComponentValidatorConstraints as Asserts;$validator = new Validator( new BlackholeMetadataFactory, new ConstraintValidatorFactory);$errors = $validator->validateValue(, new AssertsNotBlank());if($errors->count()){ print $errors;
    227. 227. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;use SymfonyComponentValidatorConstraints as Asserts;$validator = new Validator( new BlackholeMetadataFactory, new ConstraintValidatorFactory);$errors = $validator->validateValue(, new AssertsNotBlank());if($errors->count()){ print $errors;}
    228. 228. Usando la clase Validatoruse SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingBlackholeMetadataFactory;use SymfonyComponentValidatorConstraints as Asserts;$validator = new Validator( new BlackholeMetadataFactory, new ConstraintValidatorFactory);$errors = $validator->validateValue(, new AssertsNotBlank());if($errors->count()){ print $errors;} ConstraintViolationList
    229. 229. Validando un objeto (PHP)class Person{ public $name; public $age;}
    230. 230. Validando un objeto (PHP)class Person{ public $name; public $age;}$name no puede ser una cadena vacía$age deberán ser un número comprendido entre 18 y 99 años
    231. 231. Validando un objeto (PHP)
    232. 232. Validando un objeto (PHP)use SymfonyComponentValidatorValidator;
    233. 233. Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;
    234. 234. Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;
    235. 235. Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderStaticMethodLoader;
    236. 236. Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderStaticMethodLoader;$validator = new Validator(
    237. 237. Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderStaticMethodLoader;$validator = new Validator( new ClassMetadataFactory(new StaticMethodLoader() ),
    238. 238. Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderStaticMethodLoader;$validator = new Validator( new ClassMetadataFactory(new StaticMethodLoader() ), new ConstraintValidatorFactory()
    239. 239. Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderStaticMethodLoader;$validator = new Validator( new ClassMetadataFactory(new StaticMethodLoader() ), new ConstraintValidatorFactory());
    240. 240. Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderStaticMethodLoader;$validator = new Validator( new ClassMetadataFactory(new StaticMethodLoader() ), new ConstraintValidatorFactory());$person = new Person();
    241. 241. Validando un objeto (PHP)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderStaticMethodLoader;$validator = new Validator( new ClassMetadataFactory(new StaticMethodLoader() ), new ConstraintValidatorFactory());$person = new Person();$errors = $validator->validate($person);
    242. 242. Validando un objeto (PHP)use SymfonyComponentValidatorMappingClassMetadata;use SymfonyComponentValidatorConstraint as Asserts;class Person{ public $name; public $age; static function loadValidatorMetadata(ClassMetadata $metadata) { $metadata ->addPropertyConstraint(name, new AssertsNotBlank()) ->addPropertyConstraint(age , new AssertsMin(18)); ->addPropertyConstraint(age , new AssertsMax(99)); }}
    243. 243. Validando un objeto (YAML)class Person{ public $name; public $age;}
    244. 244. Validando un objeto (YAML)class Person{ public $name; public $age;}$name no puede ser una cadena vacía$age deberán ser un número comprendido entre 18 y 99 años
    245. 245. Validando un objeto (YAML)# validate.ymlPerson: properties: name: - NotBlank : ~ age: - Min: 18 - Max: 99
    246. 246. Validando un objeto (YAML)
    247. 247. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;
    248. 248. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;
    249. 249. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;
    250. 250. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderYamlFileLoader;
    251. 251. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderYamlFileLoader;$validator = new Validator(
    252. 252. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderYamlFileLoader;$validator = new Validator( new ClassMetadataFactory(
    253. 253. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderYamlFileLoader;$validator = new Validator( new ClassMetadataFactory( new YamlFileLoader(__DIR__./validate.yml)
    254. 254. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderYamlFileLoader;$validator = new Validator( new ClassMetadataFactory( new YamlFileLoader(__DIR__./validate.yml) ),
    255. 255. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderYamlFileLoader;$validator = new Validator( new ClassMetadataFactory( new YamlFileLoader(__DIR__./validate.yml) ), new ConstraintValidatorFactory()
    256. 256. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderYamlFileLoader;$validator = new Validator( new ClassMetadataFactory( new YamlFileLoader(__DIR__./validate.yml) ), new ConstraintValidatorFactory());
    257. 257. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderYamlFileLoader;$validator = new Validator( new ClassMetadataFactory( new YamlFileLoader(__DIR__./validate.yml) ), new ConstraintValidatorFactory());$person = new Person();
    258. 258. Validando un objeto (YAML)use SymfonyComponentValidatorValidator;use SymfonyComponentValidatorConstraintValidatorFactory;use SymfonyComponentValidatorMappingClassMetadataFactory;use SymfonyComponentValidatorMappingLoaderYamlFileLoader;$validator = new Validator( new ClassMetadataFactory( new YamlFileLoader(__DIR__./validate.yml) ), new ConstraintValidatorFactory());$person = new Person();$errors = $validator->validate($person);
    259. 259. Console
    260. 260. Facilita la creación de tareas repetitivas
    261. 261. La consola más sencilla
    262. 262. La consola más sencilla// console.php
    263. 263. La consola más sencilla// console.phpuse SymfonyComponentConsoleApplication;
    264. 264. La consola más sencilla// console.phpuse SymfonyComponentConsoleApplication;$console = new Application();
    265. 265. La consola más sencilla// console.phpuse SymfonyComponentConsoleApplication;$console = new Application();$console->run();
    266. 266. php console.php
    267. 267. php console.php help
    268. 268. php console.php help list
    269. 269. Hola mundo ... para consolas
    270. 270. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;
    271. 271. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;
    272. 272. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();
    273. 273. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console
    274. 274. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console ->register(hello)
    275. 275. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console ->register(hello) ->setDefinition(array(
    276. 276. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console ->register(hello) ->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre),
    277. 277. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console ->register(hello) ->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), ))
    278. 278. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console ->register(hello) ->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) ->setDescription(Saluda a una persona)
    279. 279. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console ->register(hello) ->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) ->setDescription(Saluda a una persona) ->setCode(function ($input, $output) {
    280. 280. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console ->register(hello) ->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) ->setDescription(Saluda a una persona) ->setCode(function ($input, $output) { $name = $input->getArgument(name);
    281. 281. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console ->register(hello) ->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) ->setDescription(Saluda a una persona) ->setCode(function ($input, $output) { $name = $input->getArgument(name); $output->writeln(sprintf(Hola <info>%s</info>, $name));
    282. 282. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console ->register(hello) ->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) ->setDescription(Saluda a una persona) ->setCode(function ($input, $output) { $name = $input->getArgument(name); $output->writeln(sprintf(Hola <info>%s</info>, $name)); })
    283. 283. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console ->register(hello) ->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) ->setDescription(Saluda a una persona) ->setCode(function ($input, $output) { $name = $input->getArgument(name); $output->writeln(sprintf(Hola <info>%s</info>, $name)); });
    284. 284. Hola mundo ... para consolasuse SymfonyComponentConsoleApplication;use SymfonyComponentConsoleInputInputArgument;$console = new Application();$console ->register(hello) ->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) ->setDescription(Saluda a una persona) ->setCode(function ($input, $output) { $name = $input->getArgument(name); $output->writeln(sprintf(Hola <info>%s</info>, $name)); });$console->run();
    285. 285. Hay una manera mejor de hacerlo, Command
    286. 286. Creando un nuevo comando
    287. 287. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;
    288. 288. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;
    289. 289. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command
    290. 290. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{
    291. 291. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure()
    292. 292. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() {
    293. 293. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello);
    294. 294. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello); $this->setDefinition(array(
    295. 295. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello); $this->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre),
    296. 296. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello); $this->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), ))
    297. 297. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello); $this->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) $this->setDescription(Saluda a una persona)
    298. 298. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello); $this->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) $this->setDescription(Saluda a una persona) }
    299. 299. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello); $this->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) $this->setDescription(Saluda a una persona) } public function execute($input, $output)
    300. 300. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello); $this->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) $this->setDescription(Saluda a una persona) } public function execute($input, $output) {
    301. 301. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello); $this->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) $this->setDescription(Saluda a una persona) } public function execute($input, $output) { $name = $input->getArgument(name);
    302. 302. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello); $this->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) $this->setDescription(Saluda a una persona) } public function execute($input, $output) { $name = $input->getArgument(name); $output->writeln(sprintf(Hola <info>%s</info>, $name));
    303. 303. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello); $this->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) $this->setDescription(Saluda a una persona) } public function execute($input, $output) { $name = $input->getArgument(name); $output->writeln(sprintf(Hola <info>%s</info>, $name)); }
    304. 304. Creando un nuevo comandouse SymfonyComponentConsoleCommandCommand;use SymfonyComponentConsoleInputInputArgument;class HelloCommand extends Command{ public function configure() { $this->setName(hello); $this->setDefinition(array( new InputArgument(name, InputArgument::REQUIRED, Nombre), )) $this->setDescription(Saluda a una persona) } public function execute($input, $output) { $name = $input->getArgument(name); $output->writeln(sprintf(Hola <info>%s</info>, $name)); }}
    305. 305. Creando un nuevo comando
    306. 306. Creando un nuevo comandouse SymfonyComponentConsoleApplication;
    307. 307. Creando un nuevo comandouse SymfonyComponentConsoleApplication;$console = new Application();
    308. 308. Creando un nuevo comandouse SymfonyComponentConsoleApplication;$console = new Application();$console->add(new HelloCommand());
    309. 309. Creando un nuevo comandouse SymfonyComponentConsoleApplication;$console = new Application();$console->add(new HelloCommand());$console->run();
    310. 310. Gracias@loalf Créditos: http://www.flickr.com/photos/normalityrelief/3075723695/

    ×