SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
Mis primeros pasos con Symfony 2
Edgar Dueñas
Senior Web Developer
edgar@pixtig.com
@ieddu
http://www.pixtig.com/
http://www.linkedin.com/in/ieddu
Symfony 2, un framework de PHP
Drupal 8, un potente y modular CMS
¿Porqué usar un framework?
●

Porqué es
conceptos.

un

conjunto

estandarizado

●

Fomenta la reutilización de código.

●

Fomenta código más seguro y mantenible.

●

Acelera el desarrollo de aplicaciones.

●

Agrega una estructura estándar al código.

●

Integra diversas herramientas.

●

No hay necesidad de reinventar la rueda.

de
Porqué Drupal y Symfony?
Drupal adoptará algunos de los componentes de
Symfony para su próxima versión 8. Utilizarán los
componentes principales de Symfony 2:
●

HttpFoundation,

●

HttpKernel,

●

Routing,

●

EventDispatcher,

●

DependencyInjection,

●

and ClassLoader.
El equipo de desarrollo de Drupal 8 espera una
liberación a finales de 2013.
HttpKernel
Al adoptar HttpKernel, proyectos de Drupal y
Symfony se harán más interoperable. Esto
significa que usted será capaz de integrar
fácilmente
las
aplicaciones
Symfony
personalizados con Drupal ... y vice-versa.
Esta es una muy buena noticia para ambas
comunidades.
HttpFoundation
En PHP, la petición están representados por algunas
variables globales ($ _GET, $ _POST, $ _FILES, $
_COOKIE, $ _SESSION, ...) y la respuesta es
generada por algunas funciones (echo, header,
setcookie, ...).
El componente HttpFoundation Symfony2 sustituye por
defecto estas variables y funciones globales de PHP
por una capa orientada a objetos.
Routing
Te permite asociar URL a diferentes áreas de la
aplicación.
●

●

●

●

Crear rutas
controladores.

complejas

y

asociarlas

a

Generar URL dentro de las plantillas y los
controladores.
Cargar rutas desde otros bundles o archivos
externos.
Depurar las rutas de la aplicación.
Symfony ha sido creado por una gran
comunidad liderada por Fabien Potencier de
http://sensiolabs.com/
Fabien aun sigue liderando la comunidad.
Versiones
Las versiones estables lanzadas son:
¿Porqué es muy bueno?
Symfony utiliza desarrollos exitosos de
terceros y los integra como librerías para ser
utilizados por nosotros.
●

Doctrine (ORM)

●

Twig
Características
●

Utiliza el lenguaje YAML

●

Cuenta con instrucciones de consola (tasks)

●

●

Contiene un subframework para trabajar con
formularios
Contamos con un gran número delibrerías,
herramientas y helpers.
Arquitectura MVC

Imagen tomada del manual oficial de Symfony

Esta arquitectura permite dividir nuestras aplicaciones en tres grandes capas, separa la lógica de
negocio, la lógica de servidor y la presentación de la aplicación web.
¿Qué es un ORM?
●

●

La siglas ORM provienen de Object-Relational
mapping o Mapeo entre Objetos y Relaciones.
Es un framework encargado de tratar con
nuestra base de datos desde la conexión,
generación de SQL, manipulación de datos,
transacciones y desconexión.
¿Cuál es la diferencia?
●

●

En los motores de base de datos se dice que cada tabla es
una relación, de ahí el nombre de base de datos
relacionales.
Con un ORM trabajamos unicamente orientado a objetos y
por ello decimos que tratamos con objetos y no con tablas.
–

Se crea una clase que mapea cada relación de la DB.

–

En vez de hablar directamente con la DB en lenguaje SQL,
nosotros los programadores, hablamos con los objetos y Doctrine
se encagará de traducirlo a SQL.
La ventaja
●

Con esto logramos una abstracción del 100%
con relación al motor de base de datos.
●

●

Ya no nos importa el lenguaje
que utiliza el motor de base de
datos.
Nos conectamos a casi
cualquier motor de base de
datos fácilmente.
Por ejemplo:
¿Qué es Twig?
●

El framework de plantillas adoptado por
Symfony 2 es Twig y utiliza la siguiente
sintaxis.
Al grano!
Iniciando la instalación
●

●

●

●

Descargamos la última versión disponible
http://symfony.com/download
(seleccionamos
standard)

en
la

Instalamos un servidor web (como apache) con PHP
5.3.3 o superior
Copiamos
el
archivo
Symfony_Standard_Vendors_2.2.1.tgz

descargado

Pegamos, descomprimimos y renombramos donde
estará nuestro proyecto, en mi caso /var/www/
Carpetas y archivos
Revisando con check.php
●

Para saber si nuestro servidor cuenta con
todo lo necesario para soportar el framework
podemos ejecutar el archivo check.php que se
encuentra en la carpeta app/ del proyecto
descargado de la siguiente manera:
Resultado

Esta pantalla nos muestra los requerimientos
obligatorios y los opcionales.
Despues de tener todos los requerimientos
solucionados podemos ingresar de esta forma
a nuestro proyecto:
●

http://localhost/Geducar/web/app_dev.php
Analizando la estructura
app/: Aquí se encuentra la
configuración correspondiente a
todo el proyecto.
bin/: Dentro de esta carpeta
tenemos el script vendors.sh que
se utiliza para actualizar el
framework vía consola.
src/: Esta es la carpeta donde irá
todo nuestro código y es aquí
donde se encuentras los Bundles
que básicamente son carpetas
que
representan
nuestras
aplicaciones.
vendor/: En esta carpeta se encuentran los archivos del framework Symfony y de las
demás librerías de terceros como por ejemplo Doctrine, Twig, etc.
web/: En la carpeta web es donde deberán estar los archivos públicos del proyecto
como los javascripts, css, etc. También se encuentran dentro de esta carpeta los
controladores frontales que se explican a continuación.
Controladores frontales
Es importante saber que los archivos que no se
encuentren dentro de la carpeta web/ no pueden y no
deben ser accedidos por el navegador.
Por lo tanto nuestras páginas y programas que son
guardados dentro de la carpeta src/ no son
directamente accedidos por el navegador sino a través
de los controladores frontales.
Para acceder unicamente a la carpeta web se realiza
lo siguiente:
Configurar un vhost
nano /etc/apache2/sites-available/geducar
<VirtualHost *:80>
DocumentRoot "/var/www/Geducar/web"
DirectoryIndex app.php
ServerName www.geducar.test
<Directory "/var/www/Geducar/web">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>

nano /etc/hosts y agrego lo siguiente:
127.0.0.1

www.geducar.test

Ejecutamos en la terminal
sudo a2ensite geducar
/etc/init.d/apache2 restart
http://www.geducar.test/app_dev.php/
Controladores frontales
Dentro de la carpeta web/ vemos que existen
dos archivos: “app.php” y “app_dev.php”,
estos son los archivos llamados controladores
frontales.
La diferencia entre ambos es que symfony
maneja entornos de desarrollo y producción.
Otras funcionalidades
●

●

Cache de Symfony
Symfony profiler
–

●

Nos da información actualizada por cada request sobre varias
cosas útiles para el desarrollador como parámetros del
request, sentencias SQL ejecutadas, tiempos transcurridos,
datos de sesión, etc.

Mensajes de error
Los Bundles
●

●
●

Un Bundle es una carpeta que contiene los
archivos necesarios para un grupo de
funcionalidades
específicas,
como
por
ejemplo un blog.
Los bundles deben de ir en la carpeta src/
Una aplicación podrá contener todos los
Bundles
que
queramos,
simplemente
debemos crearlos y registrarlos.
Recomendación

●

●

Lo ideal es no guardar directamente los
bundles dentro src/ sino dentro de una
carpeta.
La carpeta puede ser el nombre de empresa o
organización.
Creando nuestro Bundle
●

Primero liberamos la url de bienvenida
http://www.geducar.test/app_dev.php/
Editamos:
app/config/routing_dev.yml
En la línea número 2 agregamos el
texto “welcome” al final de la línea.
Ahora podemos ingresar desde
nuestro navegador a la página de
bienvenida
desde:
http://www.geducar.test/app_dev.php
/welcome
Desde la terminal
●

Abrimos la terminal e ingresamos a la carpeta
de nuestro proyecto.
–

●

Escribimos en la teminal.
–

●

cd /var/www/Geducar
php app/console generate:bundle

Con este comando se ejecutará un generador
que nos hará varias preguntas para crear
nuestro Bundle.
Paso a paso!
1. Lo primero que nos pide será el namespace o
carpeta contenedora del Bundle. Esto lo hacemos
escribiendo: geducar/notasBundle.
2. A continuación nos pedirá un nombre identificador
del Bundle para el proyecto y nos propone entre
corchetes la concatenación geducarnotasBundle.
Para aceptar la propuesta daremos enter.
3. A continuación nos preguntará donde queremos
que se guarde el nuevo bundle creado.
Aceptaremos la propuesta.
4. Nos pide el formato de archivo que usará para las
configuraciones del Bundle. Nos propone
[annotations] pero le diremos que queremos que
sea “yml”.
5. Luego nos pregunta si queremos que nos genere
una estructura completa para el bundle y le vamos
a decir que “no” ya que necesitamos solo la base.
6. Confirmamos si todo esta bien y escribimos “yes”
7. Nos pregunta si queremos registrar nuestro Bundle
en el archivo app/AppKernel.php a lo que le
diremos que si.
8. Nos pregunta si queremos actualizar el archivo
app/config/routing.yml y le decimos que si.
9. Con esto ya tenemos nuestro Bundle!

<-- 1
<-- 2
<-- 3
<-- 4
<-- 5

<-- 6
<-- 7
<-- 8
La estructura que genera
Verificamos
●

Para verificar que mi bundle se haya creado
bien ingresamos a la página de ejemplo que
se crea automaticamente:
–

●

http://www.geducar.test/app_dev.php/hello/edgar

Nos aparece una página en blanco con el
siguiente texto:
–

Hello edgar!
Creando una página
Para crear una página tomar en cuenta estos tres pasos:
1) Asignación de una ruta: Una dirección URL asignada a la
página para que el controlador frontal la pueda acceder.
2) Creación de una acción (action): La lógica necesaria para
la página. Corresponde al Controlador en arquitectura MVC.
3) Creación de la plantilla (template): La estructura de nuestra
página. Corresponde a la Vista en arquitectura MVC.
Asignación de una ruta
Las rutas se refieren a la dirección URL que
utilizará el controlador frontal para acceder a
nuestra página.
Las rutas se configurán en lenguaje yaml
app/config/routing.yml.

Importamos el routing de nuestro bundle.
Las ruta de nuestro Bundle
●

Se encuentra en:
/src/geducar/notasBundle/config/routing.yml

Más información sobre el lenguaje Yaml: http://es.wikipedia.org/wiki/YAML
Creando nueva ruta

Asumamos que crearemos una página que
listarán árticulos de una tienda.
Creando una acción
Editamos nuestro controlador predeterminado

src/geducar/notasBundle/Controller/DefaultController.php
Luego agregaremos el método (action), que deberá llamarse
articulosAction()
Creando nuestra vista
Crearemos un archivo dentro de la carpeta
/Resources/views/Default de nuestro bundle con
el nombre articulos.html.twig
Agregamos lo siguiente:
Twig nos provee
mucha habilidad para
manipular los datos
sin escribir código
PHP.
Podemos acceder a
las claves de nuestro
array por medio de
articulo.id
o
articulo['id'].

Más información sobre Twig en http://twig.sensiolabs.org/
Ejecutamos la url y listo!!
Formularios
Gestionar formularios HTML es una de las tareas
más comunes y difíciles para un desarrollador
web.
En Symfony esto es sencillo!
Symfony 2 integra un componente llamado Form
que simplifica el manejo de los formularios.
¿Preguntas?
Links interesantes!
●

Guía de instalación: http://goo.gl/k2sLR

●

Conceptos: http://goo.gl/cLEHh

●

●

Guía fácil para iniciar de MW:
http://goo.gl/H7dF0
Documentación oficial:
http://symfony.com/doc/2.0/book/index.html
Gracias por la atención.
Datos de contacto
Edgar Dueñas
Senior Web Developer
edgar@pixtig.com
@ieddu
http://www.pixtig.com/
http://www.linkedin.com/in/ieddu

Más contenido relacionado

La actualidad más candente

Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Raul Fraile
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoRightster
 
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 AngularFreelancer
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebRightster
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVIrontec
 
Framework Laravel
Framework LaravelFramework Laravel
Framework LaravelRafael Lobo
 
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php luigiacarigua
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Raul Fraile
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónRightster
 
Manual de php con ejercicios
Manual de php con ejerciciosManual de php con ejercicios
Manual de php con ejercicioswilliam kozisck
 
PHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebPHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebRightster
 
Aprendiendo php my sql, javascript, css, html5 capitulo 2
Aprendiendo php my sql, javascript, css, html5 capitulo 2Aprendiendo php my sql, javascript, css, html5 capitulo 2
Aprendiendo php my sql, javascript, css, html5 capitulo 2luigiacarigua
 
Aprendiendo php mysql, javascript, css, html5 LIbro Traducido
Aprendiendo php mysql, javascript, css, html5 LIbro TraducidoAprendiendo php mysql, javascript, css, html5 LIbro Traducido
Aprendiendo php mysql, javascript, css, html5 LIbro Traducidoluigiacarigua
 
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...luigiacarigua
 

La actualidad más candente (20)

Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseño
 
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
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad Web
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
 
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Manual de PHP Basico
Manual de PHP BasicoManual de PHP Basico
Manual de PHP Basico
 
QUE ES PHP
QUE ES PHPQUE ES PHP
QUE ES PHP
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. Introducción
 
Historia de PHP
Historia de PHPHistoria de PHP
Historia de PHP
 
9.laravel
9.laravel9.laravel
9.laravel
 
Manual de php con ejercicios
Manual de php con ejerciciosManual de php con ejercicios
Manual de php con ejercicios
 
PHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebPHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios Web
 
Aprendiendo php my sql, javascript, css, html5 capitulo 2
Aprendiendo php my sql, javascript, css, html5 capitulo 2Aprendiendo php my sql, javascript, css, html5 capitulo 2
Aprendiendo php my sql, javascript, css, html5 capitulo 2
 
Aprendiendo php mysql, javascript, css, html5 LIbro Traducido
Aprendiendo php mysql, javascript, css, html5 LIbro TraducidoAprendiendo php mysql, javascript, css, html5 LIbro Traducido
Aprendiendo php mysql, javascript, css, html5 LIbro Traducido
 
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
 

Destacado

Symfony y Admin Generator
Symfony y Admin GeneratorSymfony y Admin Generator
Symfony y Admin GeneratorJavier López
 
Introducción a Symfony
Introducción a Symfony Introducción a Symfony
Introducción a Symfony Marcos Quesada
 
Asynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simpleAsynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simpleKirill Chebunin
 
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPIntroducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPDaniel Primo
 
Integrando Redis en aplicaciones Symfony2
Integrando Redis en aplicaciones Symfony2Integrando Redis en aplicaciones Symfony2
Integrando Redis en aplicaciones Symfony2Ronny López
 
Speed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisSpeed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisRicard Clau
 
Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaMichael de la Cruz
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An IntroductionManvendra Singh
 

Destacado (11)

Symfony y Admin Generator
Symfony y Admin GeneratorSymfony y Admin Generator
Symfony y Admin Generator
 
Introducción a Symfony
Introducción a Symfony Introducción a Symfony
Introducción a Symfony
 
¿Por qué conviene construir un Repositorio Institucional?
¿Por qué conviene construir un Repositorio Institucional?¿Por qué conviene construir un Repositorio Institucional?
¿Por qué conviene construir un Repositorio Institucional?
 
Asynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simpleAsynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simple
 
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPIntroducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
 
Integrando Redis en aplicaciones Symfony2
Integrando Redis en aplicaciones Symfony2Integrando Redis en aplicaciones Symfony2
Integrando Redis en aplicaciones Symfony2
 
Speed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisSpeed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with Redis
 
Repositorio Digital
Repositorio DigitalRepositorio Digital
Repositorio Digital
 
Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación Estructurada
 
Javascript
JavascriptJavascript
Javascript
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An Introduction
 

Similar a Mis primeros pasos con Symfony 2

Similar a Mis primeros pasos con Symfony 2 (20)

Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniter
 
CodeIgniter
CodeIgniterCodeIgniter
CodeIgniter
 
nn
nnnn
nn
 
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...
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Zend framework
Zend frameworkZend framework
Zend framework
 
Manualcake
ManualcakeManualcake
Manualcake
 
Symfony
SymfonySymfony
Symfony
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
Desarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend FrameworkDesarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend Framework
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasos
 
Laravel vc
Laravel vcLaravel vc
Laravel vc
 
Welcome to Django
Welcome to DjangoWelcome to Django
Welcome to Django
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Laravel
LaravelLaravel
Laravel
 
Framework
FrameworkFramework
Framework
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
 
CMS - Joomla
CMS - JoomlaCMS - Joomla
CMS - Joomla
 

Último

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 

Último (20)

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 

Mis primeros pasos con Symfony 2

  • 1. Mis primeros pasos con Symfony 2 Edgar Dueñas Senior Web Developer edgar@pixtig.com @ieddu http://www.pixtig.com/ http://www.linkedin.com/in/ieddu
  • 2. Symfony 2, un framework de PHP Drupal 8, un potente y modular CMS
  • 3. ¿Porqué usar un framework? ● Porqué es conceptos. un conjunto estandarizado ● Fomenta la reutilización de código. ● Fomenta código más seguro y mantenible. ● Acelera el desarrollo de aplicaciones. ● Agrega una estructura estándar al código. ● Integra diversas herramientas. ● No hay necesidad de reinventar la rueda. de
  • 4. Porqué Drupal y Symfony? Drupal adoptará algunos de los componentes de Symfony para su próxima versión 8. Utilizarán los componentes principales de Symfony 2: ● HttpFoundation, ● HttpKernel, ● Routing, ● EventDispatcher, ● DependencyInjection, ● and ClassLoader.
  • 5. El equipo de desarrollo de Drupal 8 espera una liberación a finales de 2013.
  • 6. HttpKernel Al adoptar HttpKernel, proyectos de Drupal y Symfony se harán más interoperable. Esto significa que usted será capaz de integrar fácilmente las aplicaciones Symfony personalizados con Drupal ... y vice-versa. Esta es una muy buena noticia para ambas comunidades.
  • 7. HttpFoundation En PHP, la petición están representados por algunas variables globales ($ _GET, $ _POST, $ _FILES, $ _COOKIE, $ _SESSION, ...) y la respuesta es generada por algunas funciones (echo, header, setcookie, ...). El componente HttpFoundation Symfony2 sustituye por defecto estas variables y funciones globales de PHP por una capa orientada a objetos.
  • 8. Routing Te permite asociar URL a diferentes áreas de la aplicación. ● ● ● ● Crear rutas controladores. complejas y asociarlas a Generar URL dentro de las plantillas y los controladores. Cargar rutas desde otros bundles o archivos externos. Depurar las rutas de la aplicación.
  • 9. Symfony ha sido creado por una gran comunidad liderada por Fabien Potencier de http://sensiolabs.com/ Fabien aun sigue liderando la comunidad.
  • 11. ¿Porqué es muy bueno? Symfony utiliza desarrollos exitosos de terceros y los integra como librerías para ser utilizados por nosotros. ● Doctrine (ORM) ● Twig
  • 12. Características ● Utiliza el lenguaje YAML ● Cuenta con instrucciones de consola (tasks) ● ● Contiene un subframework para trabajar con formularios Contamos con un gran número delibrerías, herramientas y helpers.
  • 13. Arquitectura MVC Imagen tomada del manual oficial de Symfony Esta arquitectura permite dividir nuestras aplicaciones en tres grandes capas, separa la lógica de negocio, la lógica de servidor y la presentación de la aplicación web.
  • 14. ¿Qué es un ORM? ● ● La siglas ORM provienen de Object-Relational mapping o Mapeo entre Objetos y Relaciones. Es un framework encargado de tratar con nuestra base de datos desde la conexión, generación de SQL, manipulación de datos, transacciones y desconexión.
  • 15. ¿Cuál es la diferencia? ● ● En los motores de base de datos se dice que cada tabla es una relación, de ahí el nombre de base de datos relacionales. Con un ORM trabajamos unicamente orientado a objetos y por ello decimos que tratamos con objetos y no con tablas. – Se crea una clase que mapea cada relación de la DB. – En vez de hablar directamente con la DB en lenguaje SQL, nosotros los programadores, hablamos con los objetos y Doctrine se encagará de traducirlo a SQL.
  • 16. La ventaja ● Con esto logramos una abstracción del 100% con relación al motor de base de datos. ● ● Ya no nos importa el lenguaje que utiliza el motor de base de datos. Nos conectamos a casi cualquier motor de base de datos fácilmente.
  • 18. ¿Qué es Twig? ● El framework de plantillas adoptado por Symfony 2 es Twig y utiliza la siguiente sintaxis.
  • 20. Iniciando la instalación ● ● ● ● Descargamos la última versión disponible http://symfony.com/download (seleccionamos standard) en la Instalamos un servidor web (como apache) con PHP 5.3.3 o superior Copiamos el archivo Symfony_Standard_Vendors_2.2.1.tgz descargado Pegamos, descomprimimos y renombramos donde estará nuestro proyecto, en mi caso /var/www/
  • 22. Revisando con check.php ● Para saber si nuestro servidor cuenta con todo lo necesario para soportar el framework podemos ejecutar el archivo check.php que se encuentra en la carpeta app/ del proyecto descargado de la siguiente manera:
  • 23. Resultado Esta pantalla nos muestra los requerimientos obligatorios y los opcionales.
  • 24. Despues de tener todos los requerimientos solucionados podemos ingresar de esta forma a nuestro proyecto: ● http://localhost/Geducar/web/app_dev.php
  • 25. Analizando la estructura app/: Aquí se encuentra la configuración correspondiente a todo el proyecto. bin/: Dentro de esta carpeta tenemos el script vendors.sh que se utiliza para actualizar el framework vía consola. src/: Esta es la carpeta donde irá todo nuestro código y es aquí donde se encuentras los Bundles que básicamente son carpetas que representan nuestras aplicaciones. vendor/: En esta carpeta se encuentran los archivos del framework Symfony y de las demás librerías de terceros como por ejemplo Doctrine, Twig, etc. web/: En la carpeta web es donde deberán estar los archivos públicos del proyecto como los javascripts, css, etc. También se encuentran dentro de esta carpeta los controladores frontales que se explican a continuación.
  • 26. Controladores frontales Es importante saber que los archivos que no se encuentren dentro de la carpeta web/ no pueden y no deben ser accedidos por el navegador. Por lo tanto nuestras páginas y programas que son guardados dentro de la carpeta src/ no son directamente accedidos por el navegador sino a través de los controladores frontales. Para acceder unicamente a la carpeta web se realiza lo siguiente:
  • 27. Configurar un vhost nano /etc/apache2/sites-available/geducar <VirtualHost *:80> DocumentRoot "/var/www/Geducar/web" DirectoryIndex app.php ServerName www.geducar.test <Directory "/var/www/Geducar/web"> AllowOverride All Allow from All </Directory> </VirtualHost> nano /etc/hosts y agrego lo siguiente: 127.0.0.1 www.geducar.test Ejecutamos en la terminal sudo a2ensite geducar /etc/init.d/apache2 restart
  • 29. Controladores frontales Dentro de la carpeta web/ vemos que existen dos archivos: “app.php” y “app_dev.php”, estos son los archivos llamados controladores frontales. La diferencia entre ambos es que symfony maneja entornos de desarrollo y producción.
  • 30. Otras funcionalidades ● ● Cache de Symfony Symfony profiler – ● Nos da información actualizada por cada request sobre varias cosas útiles para el desarrollador como parámetros del request, sentencias SQL ejecutadas, tiempos transcurridos, datos de sesión, etc. Mensajes de error
  • 31. Los Bundles ● ● ● Un Bundle es una carpeta que contiene los archivos necesarios para un grupo de funcionalidades específicas, como por ejemplo un blog. Los bundles deben de ir en la carpeta src/ Una aplicación podrá contener todos los Bundles que queramos, simplemente debemos crearlos y registrarlos.
  • 32. Recomendación ● ● Lo ideal es no guardar directamente los bundles dentro src/ sino dentro de una carpeta. La carpeta puede ser el nombre de empresa o organización.
  • 33. Creando nuestro Bundle ● Primero liberamos la url de bienvenida http://www.geducar.test/app_dev.php/ Editamos: app/config/routing_dev.yml En la línea número 2 agregamos el texto “welcome” al final de la línea. Ahora podemos ingresar desde nuestro navegador a la página de bienvenida desde: http://www.geducar.test/app_dev.php /welcome
  • 34. Desde la terminal ● Abrimos la terminal e ingresamos a la carpeta de nuestro proyecto. – ● Escribimos en la teminal. – ● cd /var/www/Geducar php app/console generate:bundle Con este comando se ejecutará un generador que nos hará varias preguntas para crear nuestro Bundle.
  • 35. Paso a paso! 1. Lo primero que nos pide será el namespace o carpeta contenedora del Bundle. Esto lo hacemos escribiendo: geducar/notasBundle. 2. A continuación nos pedirá un nombre identificador del Bundle para el proyecto y nos propone entre corchetes la concatenación geducarnotasBundle. Para aceptar la propuesta daremos enter. 3. A continuación nos preguntará donde queremos que se guarde el nuevo bundle creado. Aceptaremos la propuesta. 4. Nos pide el formato de archivo que usará para las configuraciones del Bundle. Nos propone [annotations] pero le diremos que queremos que sea “yml”. 5. Luego nos pregunta si queremos que nos genere una estructura completa para el bundle y le vamos a decir que “no” ya que necesitamos solo la base. 6. Confirmamos si todo esta bien y escribimos “yes” 7. Nos pregunta si queremos registrar nuestro Bundle en el archivo app/AppKernel.php a lo que le diremos que si. 8. Nos pregunta si queremos actualizar el archivo app/config/routing.yml y le decimos que si. 9. Con esto ya tenemos nuestro Bundle! <-- 1 <-- 2 <-- 3 <-- 4 <-- 5 <-- 6 <-- 7 <-- 8
  • 37. Verificamos ● Para verificar que mi bundle se haya creado bien ingresamos a la página de ejemplo que se crea automaticamente: – ● http://www.geducar.test/app_dev.php/hello/edgar Nos aparece una página en blanco con el siguiente texto: – Hello edgar!
  • 38. Creando una página Para crear una página tomar en cuenta estos tres pasos: 1) Asignación de una ruta: Una dirección URL asignada a la página para que el controlador frontal la pueda acceder. 2) Creación de una acción (action): La lógica necesaria para la página. Corresponde al Controlador en arquitectura MVC. 3) Creación de la plantilla (template): La estructura de nuestra página. Corresponde a la Vista en arquitectura MVC.
  • 39. Asignación de una ruta Las rutas se refieren a la dirección URL que utilizará el controlador frontal para acceder a nuestra página. Las rutas se configurán en lenguaje yaml app/config/routing.yml. Importamos el routing de nuestro bundle.
  • 40. Las ruta de nuestro Bundle ● Se encuentra en: /src/geducar/notasBundle/config/routing.yml Más información sobre el lenguaje Yaml: http://es.wikipedia.org/wiki/YAML
  • 41. Creando nueva ruta Asumamos que crearemos una página que listarán árticulos de una tienda.
  • 42. Creando una acción Editamos nuestro controlador predeterminado src/geducar/notasBundle/Controller/DefaultController.php Luego agregaremos el método (action), que deberá llamarse articulosAction()
  • 43. Creando nuestra vista Crearemos un archivo dentro de la carpeta /Resources/views/Default de nuestro bundle con el nombre articulos.html.twig Agregamos lo siguiente:
  • 44. Twig nos provee mucha habilidad para manipular los datos sin escribir código PHP. Podemos acceder a las claves de nuestro array por medio de articulo.id o articulo['id']. Más información sobre Twig en http://twig.sensiolabs.org/
  • 45. Ejecutamos la url y listo!!
  • 46. Formularios Gestionar formularios HTML es una de las tareas más comunes y difíciles para un desarrollador web. En Symfony esto es sencillo! Symfony 2 integra un componente llamado Form que simplifica el manejo de los formularios.
  • 48. Links interesantes! ● Guía de instalación: http://goo.gl/k2sLR ● Conceptos: http://goo.gl/cLEHh ● ● Guía fácil para iniciar de MW: http://goo.gl/H7dF0 Documentación oficial: http://symfony.com/doc/2.0/book/index.html
  • 49. Gracias por la atención.
  • 50. Datos de contacto Edgar Dueñas Senior Web Developer edgar@pixtig.com @ieddu http://www.pixtig.com/ http://www.linkedin.com/in/ieddu