Symfony2, Jornadas Symfony

Download Symfony2, Jornadas Symfony

Post on 06-May-2015

6.965 views

Category:

Technology

2 download

Embed Size (px)

DESCRIPTION

Esta presentacin es la versin simplificada de la que se utiliz en las primeras Jornadas Symfony. Puedes ver la grabacin en vdeo de la presentacin original en http://bit.ly/symfony2 - - - - - - - This is the simplified version of the presentation used at the first Spanish Symfony Conference. You can watch the video recording of the original presentation at http://bit.ly/symfony2

TRANSCRIPT

<ul><li><p>organizan patrocinan</p><p>colaboran</p><p> Jornadas Symfony 5 y 6 de julio 2010Universitat Jaume I, Castellnhttp://decharlas.uji.es/symfony</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>NOTAEsta presentacin es la versin simplificada de la que se utiliz en las primeras Jornadas Symfony.</p><p>La presentacin original est llena de efectos grficos y animaciones imposibles de utilizar en slideshare.net</p><p>Puedes ver la grabacin en vdeo de la presentacin original en http://bit.ly/symfony2</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>NOTEThis is the simplified version of the presentation used at the first Spanish Symfony Conference.</p><p>The original presentation includes lots of cool effects and animations that cannot be exported to slideshare.net</p><p>You can watch the video recording of the original presentation at http://bit.ly/symfony2</p></li><li><p>Symfony 2Javier Eguluz, symfony.es</p><p>Jornadas Symfony 5 y 6 de julio 2010Universitat Jaume I, Castellnhttp://decharlas.uji.es/symfony</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>sesin patrocinada por</p><p>www.ideatea.com</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Qu es Symfony 2?</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p> ymfonys</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>2S ymfony</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>En qu se diferencian sf 1 y sf2?</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>todoen</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>todoen casi</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>La evolucin de Symfony</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>symfony</p><p>2007sf 1.0</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>symfony</p><p>sfRequest sfRouting sfLogger sfI18N sfUser</p><p>sfResponse sfYAML sfDatabase sfForm sfStorage</p><p>sfCache sfWidget sfValidator sfEventDispatcher</p><p>sfOutputEscaper</p><p>sfCoreAutoload</p><p>2008sf 1.2</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>symfony</p><p>2009sf 1.4</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Por qu reescribirlo todo de nuevo?</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Muchos archivosConfiguracinDifcil de aprenderFormulariosL E N T O</p><p>Problemas</p><p>: )</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Nuestro primer proyecto Symfony2</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>5.3.2 subversion</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>&gt; git clone</p><p>http://github.com/symfony/</p><p>symfony-sandbox.git</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>2.x</p><p>1.x</p><p>symfony 1.4sandbox</p><p>8.5 MB3.919 archivos</p><p>3 MB2.244 archivos</p><p>Symfony2sandbox</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Demo</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>&gt; php hello/console -s</p><p>&gt; init:app frontend</p><p> frontend/</p><p> web/</p><p> --yaml</p><p>&gt; init:bundle Application/</p><p>FrontendBundle</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>El cdigo fuente</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>1.x 2.x</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>1.x 2.x</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>1.x 2.x</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>1.x 2.x</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>namespaces</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>class Migration</p><p>{</p><p> ...</p><p>}</p><p>class Migration</p><p>{</p><p> ...</p><p>}</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>class sfMigration</p><p>{</p><p> ...</p><p>}</p><p>class Doctrine_Migration</p><p>{</p><p> ...</p><p>}</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>namespace Symfony;</p><p>class Migration</p><p>{</p><p> ...</p><p>}</p><p>namespace Doctrine;</p><p>class Migration</p><p>{</p><p> ...</p><p>}</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>namespace Symfony;</p><p>class Migration</p><p>{</p><p> ...</p><p>}</p><p>namespace Doctrine;</p><p>class Migration</p><p>{</p><p> ...</p><p>}</p><p>$migracion = new \Symfony\Migration();</p><p>$migracion = new \Doctrine\Migration();</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Symfony\ComponentsSymfony\Framework</p><p>Symfony\Foundation</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Symfony\ComponentsBrowserKit Console CssSelector</p><p>DependencyInjectionDependencyInjection DomCrawler</p><p>EventDispatcher File Finder</p><p>Form HttpKernel I18N</p><p>OutputEscaper Process Routing</p><p>Templating Validator Yaml</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>xxxxxx</p><p>xxxxxxxxxxxxx</p><p>completo</p><p>xxxxxx</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Estructura del proyecto</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>2.xmi_proyecto/ apps/ frontend/ cache/ config/ data/ lib/ log/ plugins/ test/ web/</p><p>mi_proyecto/ frontend/ src/ web/</p><p>1.x</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/ frontend/ src/ web/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/frontend/ frontendKernel.php</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/frontend/ frontendKernel.php cache/ logs/ config/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/frontend/ frontendKernel.php cache/ logs/ config/ routing.yml config.yml config_dev.yml config_prod.yml</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>2.x1.x</p><p>7 archivos124 lneas</p><p>3 archivos35 lneas</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/ frontend/ src/ web/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/src/ autoload.php</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/src/ autoload.php Application/ Bundle/ vendor/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/src/ autoload.php Application/ Bundle/ vendor/ symfony/ doctrine/ zend/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/src/ autoload.php Application/ FrontendBundle/ Bundle/ vendor/ symfony/ doctrine/ zend/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>2.x</p><p>Proyecto</p><p>Aplicacin</p><p>Mdulo</p><p>1.x</p><p>Proyecto</p><p>Aplicacin</p><p>Bundle</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>ProyectoAplicacin 1</p><p>Aplicacin 2</p><p>Mdulo 1</p><p>Mdulo 2</p><p>Mdulo 3</p><p>Mdulo 4 Mdulo 5</p><p>Plugins</p><p>Plugin 2</p><p>Plugin 1</p><p>Plugin 3</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>ProyectoAplicacin 1Aplicacin 2</p><p>Mdulo 1 Mdulo 2 Mdulo 3</p><p>Mdulo 4 Mdulo 5</p><p>Plugin 2</p><p>Plugin 1</p><p>Plugin 3</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>ProyectoAplicacin 1Aplicacin 2</p><p>Bundle 1 Bundle 2 Bundle 3</p><p>Bundle 4 Bundle 5</p><p>Bundle 7</p><p>Bundle 6</p><p>Bundle 8</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Bundles(paquetes)</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p> Un bundle es un conjunto de archivos que implementan una </p><p>funcionalidad </p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>1.x</p><p>oferta, categora, empresa</p><p>Proyecto</p><p>jobeet</p><p>Aplicacionesfrontend, backend</p><p>Mdulos</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>2.x</p><p>frontend, backend</p><p>Proyecto</p><p>jobeet</p><p>Aplicacionesfrontend, backend</p><p>Bundle</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>2.x</p><p>oferta, categora, empresa</p><p>Proyecto</p><p>jobeet</p><p>Aplicacionesfrontend, backend</p><p>Bundle</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>2.x</p><p>frontend, backend, oferta, categora, empresa</p><p>Proyecto</p><p>jobeet</p><p>Aplicacionesfrontend, backend</p><p>Bundle</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>2.x</p><p>Aplicacin</p><p>Mdulo</p><p>Plugin</p><p>Libreras</p><p>1.x</p><p>Bundle</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/src/ autoload.php Application/ FrontendBundle/ Bundle/ vendor/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/src/Application/ FrontendBundle/ Controller/ Resources/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/src/Application/ FrontendBundle/ Controller/ DefaultController.php Resources/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/src/Application/ FrontendBundle/ Controller/ DefaultController.php Resources/ config/ views/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>mi_proyecto/src/Application/ FrontendBundle/ Controller/ DefaultController.php Resources/ config/ routing.yml views/ index.php</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>twig</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>PropelBundle/ Command/ DependencyInjection/ Logger/ Resources/ Tests/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>TwigBundle/ DependencyInjection/ Extension/ Loader/ Renderer/ Resources/ Tests/ TokenParsers/</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>modular</p><p>xxxxxxxxxxxxx</p><p>completo</p><p>xxxxxx</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Inyeccin de Dependencias</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Inyeccin de Dependencias DIInversion of Control IoC</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Inyeccin de Dependencias DI</p><p>Inversion of Control</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>sfConfigsfProjectConfigurationsfAppConfiguration</p><p>sfContextconfig handlers...</p><p>1.x 2.x</p><p>DI</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Problema</p><p>Cmo configuro un objeto mailer para enviar emails desde mis aplicaciones?</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>public function emailAction(){ $mailer = $this-&gt;getMailer();</p><p> $mensaje = \Swift_Message::newInstance()</p><p> -&gt;setSubject('Asunto')</p><p> -&gt;setFrom('remitente@ejemplo.com')</p><p> -&gt;setTo('destinatario@ejemplo.com')</p><p> -&gt;setBody('Cuerpo');</p><p> $mailer-&gt;send($mensaje);</p><p> ...}</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>class Mailer</p><p>{</p><p> function __construct() {</p><p> $this-&gt;setUsername('xxxxxxxx')</p><p> $this-&gt;setPassword('xxxxxxxx');</p><p> }</p><p>}</p><p>$mailer = $this-&gt;getMailer();</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>class Mailer</p><p>{</p><p> function __construct() {</p><p> $this-&gt;setUsername(MAILER_USERNAME)</p><p> $this-&gt;setPassword(MAILER_PASSWORD);</p><p> }</p><p>}</p><p>define('MAILER_USERNAME', 'xxxxxxxx');</p><p>define('MAILER_PASSWORD', 'xxxxxxxx');</p><p>$mailer = $this-&gt;getMailer();</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>class Mailer</p><p>{</p><p> function __construct($user, $pass) {</p><p> $this-&gt;setUsername($user)</p><p> $this-&gt;setPassword($pass);</p><p> }</p><p>}</p><p>$mailer = $this-&gt;getMailer('xxxx', 'xxxx');</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>class Mailer</p><p>{</p><p> function __construct($transport) {</p><p> $this-&gt;transport = $transport;</p><p> }</p><p>}</p><p>$transport = new SMTP_Gmail($user, $pass);</p><p>$mailer = $this-&gt;getMailer($transport);</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>DIC</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>DIC</p><p>ependencynjectionontainer</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>DIC configuracin flexible=</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>public function emailAction(){ $mailer = $this-&gt;getMailer();</p><p> $mensaje = \Swift_Message::newInstance() -&gt;setSubject('Asunto') -&gt;...</p><p>frontend/config/config.ymlswift.mailer:</p><p> transport: gmail</p><p> username: xxxxxxxx</p><p> password: xxxxxxxx</p><p>src/FrontendBundle/Controller/DefaultController.php</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>DIC! Objetos globales" Modelo" Tus clases</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>El modelo</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>DBAL</p><p>PDO</p><p>ORM</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>ORM</p><p>ODM</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>Object Document Mapper</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>NoSQL</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>NoSQL</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>doctrine:ensure-production-settings</p><p>doctrine:cache:clear-metadata</p><p>doctrine:cache:clear-query</p><p>doctrine:clear-result</p><p>doctrine:data:load</p><p>doctrine:database:create</p><p>doctrine:database:drop</p><p>doctrine:generate:entities</p><p>doctrine:generate:entity</p><p>doctrine:generate:proxies</p><p>doctrine:generate:repositories</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>doctrine:mapping:convert</p><p>doctrine:mapping:convert-d1-schema</p><p>doctrine:mapping:import</p><p>doctrine:query:dql</p><p>doctrine:query:sql</p><p>doctrine:schema:create</p><p>doctrine:schema:drop</p><p>doctrine:schema:update</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>class DefaultController extends Controller</p><p>{</p><p> public function indexAction()</p><p> {</p><p> $conexion = $this-&gt;container-&gt;getService(</p><p> 'database_connection'</p><p> );</p><p> $ofertas = $conexion-&gt;fetchAll(</p><p> 'SELECT * FROM ofertas'</p><p> );</p><p> ...</p><p> }</p><p>}</p></li><li><p>Jornadas Symfony http://decharlas.uji.es/symfony</p><p>class DefaultController extends Controller</p><p>{</p><p> public function modificarAction()</p><p> {</p><p> $orm = $this-&gt;getEntityManager();</p><p> $oferta = new Oferta();</p><p> $oferta-&gt;setTitulo...</p></li></ul>