43
Joseluis Laso WinterHack VLC 2015 Joseluis Laso (aka Patrick) Introducción a Symfony Hashtag #winterhackvlc Twitter @jl_laso

Introducción a symfony (winter hack vlc)

Embed Size (px)

Citation preview

Joseluis Laso WinterHack VLC 2015

Joseluis Laso (aka Patrick)Introducción a Symfony

Hashtag#winterhackvl

c

Twitter@jl_laso

Joseluis Laso WinterHack VLC 2015

Sobre mí

● Autodidacta● Web developer addict● Symfony evangelist● Miembro activo de PHPValencia● Padre de dos hijos maravillosos● Ponente de PHP y Symfony● @jl_laso

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Orgulloso trabajador de WAM:

Joseluis Laso WinterHack VLC 2015

A la venta Próximamente

http://goo.gl/fzMNaE http://goo.gl/IK9hHZJoseluis Laso WinterHack VLC 2015

Autor de estos títulos

Joseluis Laso WinterHack VLC 2015

He participado en varios proyectos Symfony de

renombre:● www.tradukoj.com● www.zeendo.com

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

¿Qué es Symfony?

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Symfony es un completo framework diseñado para optimizar el desarrollo de las aplicaciones web basado en el patrón Modelo Vista Controlador.

Fuente: wikipedia

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Pero para mí también es ...

Joseluis Laso WinterHack VLC 2015

Es una metodología de trabajo

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Pero sobre todo ...

Joseluis Laso WinterHack VLC 2015

Es comunidad

Joseluis Laso WinterHack VLC 2015

Requisitos

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Para que un sistema desarrollado en Symfony2 se ejecute correctamente necesita un servidor dedicado* con un mínimo de RAM y CPU, pero sobre todo con acceso SSH

*Algunos servidores virtualizados han mostrado un comportamiento aceptable. En ningún caso un hosting compartido.

Requisitos hardware

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Conocimiento alto de PHP OO*, patrones de diseño, buenas prácticas, código limpio, PSR2, composer, git y espíritu colaborativo.

*Orientado a objetos.

Requisitos desarrollador

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Por tanto:Symfony2 es ideal para

startups que quieran empezar con una muy buena base

tecnológica.Joseluis Laso WinterHack VLC 2015

Yo no usaría Symfony2 para:● una página personal● un pequeño blog● cualquier desarrollo que deba estar

alojado en un servidor compartido.● para un MVP

Joseluis Laso WinterHack VLC 2015

Ventajas de tener un desarrollo en Symfony2

Joseluis Laso WinterHack VLC 2015

HomogéneoLos desarrolladores de Symfony2 tienen

un perfil muy similar.Soporte

Sensiolabs tiene unos planes de

soporte muy ventajosos.

FuturoUn framework vivo,

con un roadmap bien definido. Y

proyectos fuertes apostando por él.

BundlesUn ecosistema

amplio de bundles, con soluciones para

casi todo.

Ventajas de tener un desarrollo en Symfony2

A continuación se exponen unos comentarios “dramatizados” con mi opinión personal acerca del uso de un framework como Symfony2 o de su

nivel.

Joseluis Laso WinterHack VLC 2015

¿Por qué aprender a programar en Symfony?

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

AprendizajeLa curva de

aprendizaje es alta pero compensa el

esfuerzo.

CertificaciónTus conocimientos

pueden ser certificados por la empresa creadora

de Symfony.

En los foros activos puedes participar para preguntar o

responder, adquiriendo

reputación online.

Comunidad

TrabajoEl trabajo está prácticamente

asegurado, y con sueldos >=21K

¿Por qué aprender a programar en Symfony2?

Joseluis Laso WinterHack VLC 2015

No lo aprendas si ...

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Te gusta trabajar sólo y no compartir

Te da igual cómo quede el código

mientras funcione

No lo aprendas si ...

No aceptas que nadie revise o

critique tu código.

Prefieres ser artesano: guisarlo y comerlo tú mismo

No tienes ningún interés en aprender a mejorar

profesionalmente

Joseluis Laso WinterHack VLC 2015

No lo implementes en tu desarrollo si ...

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Sólo quieres resultados y te da

igual la calidad del código. Prima la velocidad

de imnplantación a hacer las cosas

bien.

No lo implementes en tu desarrollo si ...

Te da igual si el código es

mantenible o no.

Joseluis Laso WinterHack VLC 2015

Patrón MVC

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Veamos algo de código

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

class HelloController

{

/** * @Route("/demo/{name}", name="hello_demo") * @Template() */ public function demoAction($name) {

$em = $this->container->get("doctrine")->getEntityManager(); $item => $em->getRepository("Item")->findOneBy(array("name" => $name));

return array( "name" => $name, "item" => $item, );

}}

Joseluis Laso WinterHack VLC 2015

class HelloController

{

/** * @Route("/demo/{name}", name="hello_demo") * @Template() */ public function demoAction($name) {

$em = $this->container->get("doctrine")->getEntityManager(); $item => $em->getRepository("Item")->findOneBy(array("name" => $name));

return array( "name" => $name, "item" => $item, );

}}

Anotaciones que le indican a Symfony2 que este método va a atender la ruta /demo/lo-que-sea y que se mostrará el resultado usando una plantilla twig con el mismo nombre que el método.

Joseluis Laso WinterHack VLC 2015

class HelloController

{

/** * @Route("/demo/{name}", name="hello_demo") * @Template() */ public function demoAction($name) {

$em = $this->container->get("doctrine")->getEntityManager(); $item => $em->getRepository("Item")->findOneBy(array("name" => $name));

return array( "name" => $name, "item" => $item, );

}}

Contenedor de dependencias que suministra los servicios por su nombre.

ORM Doctrine para acceso a la Base de datos.

Joseluis Laso WinterHack VLC 2015

class HelloController

{

/** * @Route("/demo/{name}", name="hello_demo") * @Template() */ public function demoAction($name) {

$em = $this->container->get("doctrine")->getEntityManager(); $item => $em->getRepository("Item")->findOneBy(array("name" => $name));

return array( "name" => $name, "item" => $item, );

}}

Acceso a los datos mediante repositorios con funciones primitivas o definidas.

Paso de parámetros a la plantilla de una manera intuitiva.

Joseluis Laso WinterHack VLC 2015

{% extends '::base.html.twig' %}

{% block stylesheets %} {{ parent() }} <style type="text/css">.sidebar { padding: 9px 0;}</style>{% endblock stylesheets %}

{% block sidebar %}<div class=”sidebar”> {{ item|raw }}</div>{% endblock sidebar %}

{% block content %} {% set fullName = ‘Mr ’ ~ name %} Hello {{ fullName }} {% endblock content %}

Joseluis Laso WinterHack VLC 2015

{% extends '::base.html.twig' %}

{% block stylesheets %} {{ parent() }} <style type="text/css">.sidebar { padding: 9px 0;}</style>{% endblock stylesheets %}

{% block sidebar %}<div class=”sidebar”> {{ item|raw }}</div>{% endblock sidebar %}

{% block content %} {% set fullName = ‘Mr ’ ~ name %} Hello {{ fullName }} {% endblock content %}

Lenguaje de plantillas muy intuitivo, con herencia.

Joseluis Laso WinterHack VLC 2015

{% extends '::base.html.twig' %}

{% block stylesheets %} {{ parent() }} <style type="text/css">.sidebar { padding: 9px 0;}</style>{% endblock stylesheets %}

{% block sidebar %}<div class=”sidebar”> {{ item|raw }}</div>{% endblock sidebar %}

{% block content %} {% set fullName = ‘Mr ’ ~ name %} Hello {{ fullName }} {% endblock content %}

Los bloques facilitan la inserción de nuevo contenido o alterar el existente

Joseluis Laso WinterHack VLC 2015

{% extends '::base.html.twig' %}

{% block stylesheets %} {{ parent() }} <style type="text/css">.sidebar { padding: 9px 0;}</style>{% endblock stylesheets %}

{% block sidebar %}<div class=”sidebar”> {{ item|raw }}</div>{% endblock sidebar %}

{% block content %} {% set fullName = ‘Mr ’ ~ name %} Hello {{ fullName }} {% endblock content %}

Sintaxis poco intrusiva y simétrica

Joseluis Laso WinterHack VLC 2015

{% extends '::base.html.twig' %}

{% block stylesheets %} {{ parent() }} <style type="text/css">.sidebar { padding: 9px 0;}</style>{% endblock stylesheets %}

{% block sidebar %}<div class=”sidebar”> {{ item|raw }}</div>{% endblock sidebar %}

{% block content %} {% set fullName = ‘Mr ’ ~ name %} Hello {{ fullName }} {% endblock content %}

Funciones y filtros nativos y extensibles por código

Joseluis Laso WinterHack VLC 2015

{% extends '::base.html.twig' %}

{% block stylesheets %} {{ parent() }} <style type="text/css">.sidebar { padding: 9px 0;}</style>{% endblock stylesheets %}

{% block sidebar %}<div class=”sidebar”> {{ item|raw }}</div>{% endblock sidebar %}

{% block content %} {% set fullName = ‘Mr ’ ~ name %} Hello {{ fullName }} {% endblock content %}

órdenes que permiten automatizar, como for, set, if, etc ...

Joseluis Laso WinterHack VLC 2015

¿Quieres trabajar?

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Es rara la semana en la que no recibo una oferta de trabajo relacionada con

Symfony.

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

¿Quieres aprender?

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

La documentación oficial está bien organizada y accesible:● http://symfony.com/doc/current/index.html

Material para aprender por tu cuenta:● http://librosweb.es/libro/symfony_2_x/● http://librosweb.es/libro/buenas_practicas_symfony/● http://symfony.es/libro/● https://leanpub.com/un-ano-con-symfony

Cursos online● http://www.alfa9.com/formacion/cursos-symfony

Presencialmente en Valencia:● http://www.cursosmk.com/programacion/iniciacion-symfony/● http://www.cursosmk.com/programacion/symfony-avanzado/

Joseluis Laso WinterHack VLC 2015

Joseluis Laso WinterHack VLC 2015

Muchas gracias

Joseluis Laso (Patrick)

@jl_laso

http://www.joseluislaso.es

http://www.patricklaso.com