SlideShare una empresa de Scribd logo
Meetups
@SergioCarracedoMás de 10 años como Desarrollador de Aplicaciones
Algunos coqueteos con el mundo de los SysAdmin
Actualmente: desarrollando Aplicaciones Web para Telefónica.
@davidnegreira
Ficha
Meetups
● Creado en el año 2003 por Fabien Potencier, actual CEO de Sensio Labs
● Licencia:Licencia MIT
● Versión estable: 3.0.5 y LTS: 2.8.5
● Certificación por Sensio Labs (avanzado o experto)
Requisitos Mínimos
Meetups
● Php Orientado a Objetos
● Patrón MVC (Modelo - Vista - Controlador)
● Patrón Inyección de dependencias
● Patrón Controlador Frontal
● ORM ( mapeo objeto-relacional)
¿Donde?
Meetups
● Javier Eguiluz - el guru
● http://librosweb.es/libro/symfony_2_4/
● Documentación Oficial - si de verdad que es buena
● stackoverflow.com/
● Comunidad muy activa: github,twitter,reddit, foros …
● https://github.com/symfony/symfony-demo
¿Porque?
Meetups
● En constante desarrollo y evolución
26,046 commits 157 pull request
● Formado por componentes desacoplados reutilizados por muchos otros desarrollos php
como : Drupal, Laravel, phpBB, Joomla …
● Flexible, ligero, expandible
● Estándares PSRs y convenciones buenas prácticas ...
● Lucha contra la anarquía y el Spaghetti code
● Usado en Youporn.com
¿Como?
Meetups
Petición - Request
Respuesta- Response
¿Como? - Enrutando
Meetups
Request
Response
Enrutado
Controlador Frontal ( app.php )
Controlador
app:
resource: "@AppBundle/Controller/"
type: annotation
/**
* @Route("/hola/", name="saludo")
*/
routing.yml
controller.php
¿Como? - Vistas y Entidades
Meetups
Request
Response
Enrutado
Controlador BD: entidadesPlantillas
M
V C
Vamos al Código: Controlador
Meetups
<?php
namespace AppBundleController;
use AppBundleEntityPost;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyBundleFrameworkBundleControllerController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
/**
* Controller used to manage blog contents in the public part of the site.
*/
class BlogController extends Controller
{
/**
* @Route("/", defaults={"page": 1}, name="blog_index")
* @Route("/page/{page}", requirements={"page": "[1-9]d*"}, name="blog_index_paginated")
*/
public function indexAction($page)
{
$posts = $this->getDoctrine()->getRepository('AppBundle:Post')->findLatest($page);
return $this->render('blog/index.html.twig', array('posts' => $posts));
}
}
Vamos al Código: Vista
Meetups
index.html.twig
{% extends 'base.html.twig' %}
{% block body_id 'blog_index' %}
{% block body %}
{% for post in posts %}
<article class="post">
<h2>
<a href="{{ path('blog_post', { slug: post.slug }) }}">
{{ post.title|upper }}
</a>
</h2>
{{ post.summary|md2html }}
</article>
{% else %}
<div class="well">{{ 'post.no_posts_found' }}</div>
{% endfor %}
{% endblock %}
base.html.twig
<!DOCTYPE html>
<html>
<head>
{% block stylesheets %}
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
{% endblock %}
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
</head>
<body id="{% block body_id %}{% endblock %}">
<div class="container body-container">
{% block body %}{% endblock %}
</div>
</body>
Vamos al Código: Modelo
Meetups
Doctrine - da para charla !
<?php
namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
/**
* @ORMEntity(repositoryClass="AppBundleRepositoryPostRepository")
* @ORMTable(name="symfony_demo_post")
*/
class Post
{
const NUM_ITEMS = 10;
/**
* @ORMId
* @ORMGeneratedValue
* @ORMColumn(type="integer")
*/
private $id;
/**
* @ORMColumn(type="string")
* @AssertNotBlank()
*/
private $title;
public function getId()
{
return $this->id;
}
public function getTitle()
{
return $this->title;
}
public function setTitle($title)
{
$this->title = $title;
}
}
Vamos al Código: Modelo Métodos de Consulta
Meetups
En el Controlador
$this->getDoctrine()->getRepository('AppBundle:Post')->findAll();
$this->getDoctrine()->getRepository('AppBundle:Post')->find($id);
$this->getDoctrine()->getRepository('AppBundle:Post')->findBy(array("tittle"=>$tituloBuscado));
$this->getDoctrine()->getRepository('AppBundle:Post')->findOneBy(array("tittle"=>$tituloBuscado));
Vamos al Código: Modelo Repositorios
Meetups
Doctrine
<?php
namespace AppBundleRepository;
use DoctrineORMEntityRepository;
use DoctrineORMQuery;
class PostRepository extends EntityRepository
{
public function queryLatest()
{
$this->getEntityManager()
->createQuery('
SELECT p
FROM AppBundle:Post p
WHERE p.publishedAt <= :now
ORDER BY p.publishedAt DESC
')
->setParameter('now', new DateTime())
->getResult();
$this->createQueryBuilder("p")
->select("p")
->where(" p.publishedAt <= :now")->setParameter('now', new DateTime())
->orderBy("p.publishedA", "DESC")
->getQuery()->getArrayResult();
}
}
Básico para Empezar
Meetups
● La consola de Symfony
$ php bin/console cache:clear --env=prod
● La cache de Symfony: problemas con permisos, limpiar para producción
● Los archivos de configuración: yml
● Los entornos: dev, prod
● Composer para ampliar funcionalidades
Básico para Empezar - Directorios
Meetups
● app/: contiene la configuración de la aplicación.
● src/: aquí se encuentra todo el código PHP de la aplicación.
● vendor/: por convención aquí se guardan todas las librerías creadas por terceros.
● web/: directorio web raíz y contiene todos los archivos que se puede acceder públicamente.
● bin/: ejecutables (e.g. bin/console).
● var/: archivos generados (cache, logs, session)
● tests/: Test Unitarios
Demo
Meetups
I’m ready Baby
Dentro demo
Meetups
Symfony Catalunya es una nueva conferencia
internacional sobre Symfony que se celebrará en
Barcelona durante los próximos 22 y 23 de julio
Meetups
¿Preguntas?
www.opsou.com www.pedrofigueras.comwww.casadellibro.com

Más contenido relacionado

La actualidad más candente

Uso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomlaUso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomla
Roberto Segura
 
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
SergioIglesiasNET
 
Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP
Aprende PHP
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
Nelson Rojas Núñez
 
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
SergioIglesiasNET
 
Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9Chamilo Association
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Freelancer
 
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
Pablo Arias
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan phpCarlos Zantana
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -Introducción
Oscar Josué Uh Pérez
 
This is Drupal! (Basics)
This is Drupal! (Basics)This is Drupal! (Basics)
This is Drupal! (Basics)
Maria del Carmen Garcia
 
Extender la funcionalidad de WordPress
Extender la funcionalidad de WordPressExtender la funcionalidad de WordPress
Extender la funcionalidad de WordPress
Fernando Puente
 
Introducción a Ruby on rails
Introducción a Ruby on railsIntroducción a Ruby on rails
Introducción a Ruby on rails
Javier Ferrer González
 
Taller de laravel
Taller de laravelTaller de laravel
Taller de laravel
Sebastian Zamorano Jara
 
#MM17ES - Theming en Magento 2 usando un framework de front-end
#MM17ES - Theming en Magento 2 usando un framework de front-end#MM17ES - Theming en Magento 2 usando un framework de front-end
#MM17ES - Theming en Magento 2 usando un framework de front-end
Rubén Rodríguez
 
JavaScript desde Cero
JavaScript desde CeroJavaScript desde Cero
JavaScript desde Cero
Juan Seguí Moreno
 
Gutenberg sin miedo
Gutenberg sin miedoGutenberg sin miedo
Gutenberg sin miedo
Ignacio José Cruz Moreno
 
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
JaenFrankcezco
 
Lenguaje JavaScript parte 1
Lenguaje JavaScript parte 1Lenguaje JavaScript parte 1
Lenguaje JavaScript parte 1
Facultad de Ciencias y Sistemas
 

La actualidad más candente (20)

Uso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomlaUso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomla
 
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
 
Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
 
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
 
Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
 
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan php
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -Introducción
 
This is Drupal! (Basics)
This is Drupal! (Basics)This is Drupal! (Basics)
This is Drupal! (Basics)
 
Extender la funcionalidad de WordPress
Extender la funcionalidad de WordPressExtender la funcionalidad de WordPress
Extender la funcionalidad de WordPress
 
Introducción a Ruby on rails
Introducción a Ruby on railsIntroducción a Ruby on rails
Introducción a Ruby on rails
 
Taller de laravel
Taller de laravelTaller de laravel
Taller de laravel
 
#MM17ES - Theming en Magento 2 usando un framework de front-end
#MM17ES - Theming en Magento 2 usando un framework de front-end#MM17ES - Theming en Magento 2 usando un framework de front-end
#MM17ES - Theming en Magento 2 usando un framework de front-end
 
JavaScript desde Cero
JavaScript desde CeroJavaScript desde Cero
JavaScript desde Cero
 
Javascript
JavascriptJavascript
Javascript
 
Gutenberg sin miedo
Gutenberg sin miedoGutenberg sin miedo
Gutenberg sin miedo
 
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
 
Lenguaje JavaScript parte 1
Lenguaje JavaScript parte 1Lenguaje JavaScript parte 1
Lenguaje JavaScript parte 1
 

Similar a Primeros pasos Symfony PHPVigo

Frameworks para Php Adwa
Frameworks para Php AdwaFrameworks para Php Adwa
Frameworks para Php Adwa
Andres Karp
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
menttes
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesdeivit86
 
Django
DjangoDjango
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
Alberto Diaz Martin
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
Alberto Diaz Martin
 
Taller de zan php
Taller de zan phpTaller de zan php
Taller de zan php
programadoresmx
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
Microsoft Argentina y Uruguay [Official Space]
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
Mario IC
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5Cycle-IT
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
Cycle-IT
 
Metadata api en apex
Metadata api en apexMetadata api en apex
Metadata api en apex
Federico Giust
 
Atix24
Atix24Atix24
Atix24
atixlibre
 
Crear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde CeroCrear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde Cero
Eduardo Turiño
 
HTML5 por Gustavo Vilchez
HTML5 por Gustavo VilchezHTML5 por Gustavo Vilchez
HTML5 por Gustavo VilchezGustavo
 
Html5
Html5Html5

Similar a Primeros pasos Symfony PHPVigo (20)

Frameworks para Php Adwa
Frameworks para Php AdwaFrameworks para Php Adwa
Frameworks para Php Adwa
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensiones
 
Django
DjangoDjango
Django
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
Taller de zan php
Taller de zan phpTaller de zan php
Taller de zan php
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
 
JqueryMobile
JqueryMobile JqueryMobile
JqueryMobile
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
 
Metadata api en apex
Metadata api en apexMetadata api en apex
Metadata api en apex
 
Atix24
Atix24Atix24
Atix24
 
Atix24
Atix24Atix24
Atix24
 
Crear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde CeroCrear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde Cero
 
HTML5 por Gustavo Vilchez
HTML5 por Gustavo VilchezHTML5 por Gustavo Vilchez
HTML5 por Gustavo Vilchez
 
Html5
Html5Html5
Html5
 

Más de PHP Vigo

Blackfire.io PHPVigo Talk
Blackfire.io PHPVigo TalkBlackfire.io PHPVigo Talk
Blackfire.io PHPVigo Talk
PHP Vigo
 
Diariomotor Presentación PHPVigo
Diariomotor Presentación PHPVigoDiariomotor Presentación PHPVigo
Diariomotor Presentación PHPVigo
PHP Vigo
 
PHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
PHPVigo #09: Preprocesadores CSS/SASS por Sergio CarracedoPHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
PHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
PHP Vigo
 
Deployer Despliegue rápido de apps
Deployer  Despliegue rápido de appsDeployer  Despliegue rápido de apps
Deployer Despliegue rápido de apps
PHP Vigo
 
[Php vigo][talk] unit testing sucks ( and it's your fault )
[Php vigo][talk] unit testing sucks ( and it's your fault )[Php vigo][talk] unit testing sucks ( and it's your fault )
[Php vigo][talk] unit testing sucks ( and it's your fault )
PHP Vigo
 
Jesús Amieiro: Git para el día a día
Jesús Amieiro: Git para el día a díaJesús Amieiro: Git para el día a día
Jesús Amieiro: Git para el día a día
PHP Vigo
 
Presentación del grupo PHPVigo - Meetup #1
Presentación del grupo PHPVigo - Meetup #1Presentación del grupo PHPVigo - Meetup #1
Presentación del grupo PHPVigo - Meetup #1
PHP Vigo
 

Más de PHP Vigo (7)

Blackfire.io PHPVigo Talk
Blackfire.io PHPVigo TalkBlackfire.io PHPVigo Talk
Blackfire.io PHPVigo Talk
 
Diariomotor Presentación PHPVigo
Diariomotor Presentación PHPVigoDiariomotor Presentación PHPVigo
Diariomotor Presentación PHPVigo
 
PHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
PHPVigo #09: Preprocesadores CSS/SASS por Sergio CarracedoPHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
PHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
 
Deployer Despliegue rápido de apps
Deployer  Despliegue rápido de appsDeployer  Despliegue rápido de apps
Deployer Despliegue rápido de apps
 
[Php vigo][talk] unit testing sucks ( and it's your fault )
[Php vigo][talk] unit testing sucks ( and it's your fault )[Php vigo][talk] unit testing sucks ( and it's your fault )
[Php vigo][talk] unit testing sucks ( and it's your fault )
 
Jesús Amieiro: Git para el día a día
Jesús Amieiro: Git para el día a díaJesús Amieiro: Git para el día a día
Jesús Amieiro: Git para el día a día
 
Presentación del grupo PHPVigo - Meetup #1
Presentación del grupo PHPVigo - Meetup #1Presentación del grupo PHPVigo - Meetup #1
Presentación del grupo PHPVigo - Meetup #1
 

Último

Libro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdfLibro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdf
danitarb
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
Alejandrino Halire Ccahuana
 
Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptx
LorenaCovarrubias12
 
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
pablomarin116
 
Educar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdfEducar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdf
Demetrio Ccesa Rayme
 
Fase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometricoFase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometrico
YasneidyGonzalez
 
Testimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdfTestimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdf
Txema Gs
 
Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
Profes de Relideleón Apellidos
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
auxsoporte
 
PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.
https://gramadal.wordpress.com/
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
sandradianelly
 
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdfFORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
El Fortí
 
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdfAsistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Demetrio Ccesa Rayme
 
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernándezPRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
Ruben53283
 
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdfT3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
eliecerespinosa
 
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdfINFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
Alejandrogarciapanta
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
JAVIER SOLIS NOYOLA
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
YolandaRodriguezChin
 
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia leeevalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
MaribelGaitanRamosRa
 
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
UNIDAD DE APRENDIZAJE DEL MES  Junio 2024UNIDAD DE APRENDIZAJE DEL MES  Junio 2024
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
EdwardYumbato1
 

Último (20)

Libro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdfLibro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdf
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
 
Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptx
 
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
 
Educar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdfEducar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdf
 
Fase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometricoFase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometrico
 
Testimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdfTestimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdf
 
Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
 
PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
 
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdfFORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
FORTI-JUNIO 2024. CIENCIA, EDUCACION, CULTURA,pdf
 
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdfAsistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
 
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernándezPRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
 
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdfT3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
 
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdfINFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
 
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia leeevalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
 
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
UNIDAD DE APRENDIZAJE DEL MES  Junio 2024UNIDAD DE APRENDIZAJE DEL MES  Junio 2024
UNIDAD DE APRENDIZAJE DEL MES Junio 2024
 

Primeros pasos Symfony PHPVigo

  • 1.
  • 2. Meetups @SergioCarracedoMás de 10 años como Desarrollador de Aplicaciones Algunos coqueteos con el mundo de los SysAdmin Actualmente: desarrollando Aplicaciones Web para Telefónica. @davidnegreira
  • 3. Ficha Meetups ● Creado en el año 2003 por Fabien Potencier, actual CEO de Sensio Labs ● Licencia:Licencia MIT ● Versión estable: 3.0.5 y LTS: 2.8.5 ● Certificación por Sensio Labs (avanzado o experto)
  • 4. Requisitos Mínimos Meetups ● Php Orientado a Objetos ● Patrón MVC (Modelo - Vista - Controlador) ● Patrón Inyección de dependencias ● Patrón Controlador Frontal ● ORM ( mapeo objeto-relacional)
  • 5. ¿Donde? Meetups ● Javier Eguiluz - el guru ● http://librosweb.es/libro/symfony_2_4/ ● Documentación Oficial - si de verdad que es buena ● stackoverflow.com/ ● Comunidad muy activa: github,twitter,reddit, foros … ● https://github.com/symfony/symfony-demo
  • 6. ¿Porque? Meetups ● En constante desarrollo y evolución 26,046 commits 157 pull request ● Formado por componentes desacoplados reutilizados por muchos otros desarrollos php como : Drupal, Laravel, phpBB, Joomla … ● Flexible, ligero, expandible ● Estándares PSRs y convenciones buenas prácticas ... ● Lucha contra la anarquía y el Spaghetti code ● Usado en Youporn.com
  • 8. ¿Como? - Enrutando Meetups Request Response Enrutado Controlador Frontal ( app.php ) Controlador app: resource: "@AppBundle/Controller/" type: annotation /** * @Route("/hola/", name="saludo") */ routing.yml controller.php
  • 9. ¿Como? - Vistas y Entidades Meetups Request Response Enrutado Controlador BD: entidadesPlantillas M V C
  • 10. Vamos al Código: Controlador Meetups <?php namespace AppBundleController; use AppBundleEntityPost; use SensioBundleFrameworkExtraBundleConfigurationRoute; use SymfonyBundleFrameworkBundleControllerController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; /** * Controller used to manage blog contents in the public part of the site. */ class BlogController extends Controller { /** * @Route("/", defaults={"page": 1}, name="blog_index") * @Route("/page/{page}", requirements={"page": "[1-9]d*"}, name="blog_index_paginated") */ public function indexAction($page) { $posts = $this->getDoctrine()->getRepository('AppBundle:Post')->findLatest($page); return $this->render('blog/index.html.twig', array('posts' => $posts)); } }
  • 11. Vamos al Código: Vista Meetups index.html.twig {% extends 'base.html.twig' %} {% block body_id 'blog_index' %} {% block body %} {% for post in posts %} <article class="post"> <h2> <a href="{{ path('blog_post', { slug: post.slug }) }}"> {{ post.title|upper }} </a> </h2> {{ post.summary|md2html }} </article> {% else %} <div class="well">{{ 'post.no_posts_found' }}</div> {% endfor %} {% endblock %} base.html.twig <!DOCTYPE html> <html> <head> {% block stylesheets %} <link rel="stylesheet" href="{{ asset('css/app.css') }}"> {% endblock %} <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" /> </head> <body id="{% block body_id %}{% endblock %}"> <div class="container body-container"> {% block body %}{% endblock %} </div> </body>
  • 12. Vamos al Código: Modelo Meetups Doctrine - da para charla ! <?php namespace AppBundleEntity; use DoctrineORMMapping as ORM; /** * @ORMEntity(repositoryClass="AppBundleRepositoryPostRepository") * @ORMTable(name="symfony_demo_post") */ class Post { const NUM_ITEMS = 10; /** * @ORMId * @ORMGeneratedValue * @ORMColumn(type="integer") */ private $id; /** * @ORMColumn(type="string") * @AssertNotBlank() */ private $title; public function getId() { return $this->id; } public function getTitle() { return $this->title; } public function setTitle($title) { $this->title = $title; } }
  • 13. Vamos al Código: Modelo Métodos de Consulta Meetups En el Controlador $this->getDoctrine()->getRepository('AppBundle:Post')->findAll(); $this->getDoctrine()->getRepository('AppBundle:Post')->find($id); $this->getDoctrine()->getRepository('AppBundle:Post')->findBy(array("tittle"=>$tituloBuscado)); $this->getDoctrine()->getRepository('AppBundle:Post')->findOneBy(array("tittle"=>$tituloBuscado));
  • 14. Vamos al Código: Modelo Repositorios Meetups Doctrine <?php namespace AppBundleRepository; use DoctrineORMEntityRepository; use DoctrineORMQuery; class PostRepository extends EntityRepository { public function queryLatest() { $this->getEntityManager() ->createQuery(' SELECT p FROM AppBundle:Post p WHERE p.publishedAt <= :now ORDER BY p.publishedAt DESC ') ->setParameter('now', new DateTime()) ->getResult(); $this->createQueryBuilder("p") ->select("p") ->where(" p.publishedAt <= :now")->setParameter('now', new DateTime()) ->orderBy("p.publishedA", "DESC") ->getQuery()->getArrayResult(); } }
  • 15. Básico para Empezar Meetups ● La consola de Symfony $ php bin/console cache:clear --env=prod ● La cache de Symfony: problemas con permisos, limpiar para producción ● Los archivos de configuración: yml ● Los entornos: dev, prod ● Composer para ampliar funcionalidades
  • 16. Básico para Empezar - Directorios Meetups ● app/: contiene la configuración de la aplicación. ● src/: aquí se encuentra todo el código PHP de la aplicación. ● vendor/: por convención aquí se guardan todas las librerías creadas por terceros. ● web/: directorio web raíz y contiene todos los archivos que se puede acceder públicamente. ● bin/: ejecutables (e.g. bin/console). ● var/: archivos generados (cache, logs, session) ● tests/: Test Unitarios
  • 18. Meetups Symfony Catalunya es una nueva conferencia internacional sobre Symfony que se celebrará en Barcelona durante los próximos 22 y 23 de julio