SlideShare una empresa de Scribd logo
Symfony 2 
Formación y primeros pasos 
Por: Sonia Benítez Martínez 
Web Developer 
@Neithar
Índice I 
● Introducción a Symfony 
● Características 
● Recordando MVC y ORM 
● Twig 
● YML 
● Gestionando dependencias con Composer 
● Instalando Composer (Windows) 
● Instalando Composer (Linux) 
● Descargando Symfony2(Windows) 
● Descargando Symfony2(Linux)
Índice II 
● Consideraciones 
● Estructura del proyecto 
● Controladores Frontales 
● Entornos 
● Caché 
● Profiler 
● Mensajes de Error 
● Aplicando la filosofía de Symfony 
● Entidades 
● ¿Qué son los Bundles?
Índice III 
● Bundles en Symfony 
● El comando Console 
● Crear un Bundle 
● Creando el Esquema 
● La Base de Datos 
● El enrutador (Routing Component) 
● La cara oculta del Routing 
● Rutas 
● Patrón de nomenclatura para controladores 
● Comandos Útiles 
● Bibliografía
Introducción a Symfony 
● Symfony es un Framework PHP desarrollado en PHP 5.3 
● Arquitectura MVC 
● Creado por la comunidad liderada por Fabien Potencier 
● Integra Frameworks como: 
o Doctrine 
o Twig 
● Modelo: Doctrine, ORM basado en Hibernate 
● Configuraciones en: 
o YAML, XML, PHP
Características 
● Open-source 
● Muy flexible 
● Extensible 
● Completo 
● Rápido 
● Alto rendimiento 
● Gran comunidad y documentación multiidioma 
● Basado en buenas prácticas
Recordando MVC (Modelo - Vista- Controlador) 
● Vista: Visualización de la 
información, diseño, colores, 
estilos 
● Modelado: Capa que se 
responsabiliza de la 
manipulación de los datos 
● Controlador: Intermediario 
entre los dos anteriores: 
Procesa y muestra los datos 
obtenidos por el Modelo.
ORM (Object-Relational Mapping) 
● Doctrine: 
o Framework para tratar con BBDD 
o Conexión 
o Generación SQL 
o Manipulación datos 
o Transacciones 
o Desconexión
Twig I 
o Motor y lenguaje de plantillas para PHP utilizado por defecto en 
Symfony2 
 Una plantilla es un archivo de texto que puede ser generado en 
el formato que se necesite (HTML, CSS, XML, ...) 
o Rápido: Twig minimiza la cantidad de código necesaria para producir 
el mismo efecto que con PHP puro. 
o Seguro: Twig sólo afecta a la construcción del template, no a la lógica 
de negocio, impidiendo la mala gestión de datos o errores. 
o Flexible: Permite al desarrollador definir sus propias etiquetas y 
filtros personalizados. 
o Sistema de herencia de plantillas y cacheo de plantillas
Twig II 
o PHP es el mismo motor de templates (muy largo de 
escribir). 
o Ejemplo: 
<?php echo htmlspecialchars($var, ENT_QUOTES, ‘UTF-8’); ?> 
o Ésto en Twig: 
{{ var|e }} 
¿Por qué otro motor de templates?
Twig III : Sintaxis orientada a Templates 
o Hay muchos accesos directos (Shortcuts) para 
realizar acciones más comunes. 
o Un ejemplo de iteración sobre un array: 
{% for user in users %} 
{{ user.name }} 
{% else %} 
No users have been found. 
{% endfor %}
Twig IV : Algunas Funcionalidades 
o Con Twig hay todas las opciones posibles a la hora de 
crear templates: existe herencia múltiple, bloques de 
código, escape automático, entre muchas otras 
funcionalidades: 
o Ejemplos: 
{% extends “MDWDemoBundle:Default:index.html.twig” %} 
{% block content %} 
Content of the page… 
{% endblock %}
Twig V : Un poco de sintaxis 
● Comentarios → {# Comentario #} 
● Imprimir → {{ mostrar_algo }} → <?php echo $mostrar_algo; ?> 
● Tags → {% hacer_algo %} → {% if online == false %} 
<p> Mainentance! </p> 
{% endif %} 
● Filtros → {{ ‘my first car’|capitalize }} 
● Funciones → {{ random(5) }} 
● Tests → {# Se evalúa a true si la variable es null, false o cadena vacía #} 
{% if foo is empty %} … {% endif %}
YAML I 
● Lenguaje muy sencillo que permite describir los datos como en XML, pero 
en una sintaxis mucho más sencilla. 
● Presenta un formato especialmente útil para describir datos que pueden 
ser transformados en arrays simples y asociativos. 
● Ejemplo: 
o $casa = array(‘familia’ => array(‘apellido’ => ‘García’, ‘padres’ 
=> array(‘Antonio, María’), ‘hijos’ => array(‘Jose’, Manuel, 
Carmen)), dirección => array(‘numero’ => 34, ‘calle’ => ‘Gran 
Via’, ‘ciudad’ => ‘Barcelona’, ‘codigopostal’ => ‘12345’ ) );
YAML II
Gestionando dependencias con Composer 
Vale, pero… ¿Qué es composer? 
● Composer es un Gestor de Dependencias PHP 
● Contiene una BBDD online de librerías de terceros 
● La BBDD se centraliza en el repositorio Packagist 
● 1 único archivo de config → descarga n librerías 
● Ǝ Librerías como: Symfony, Wordpress, Drupal, etc.
Instalando Composer (W) I 
Partiendo de: Xampp / Wampp → OK 
1. Descargar composer: https://getcomposer.org/installer 
2. Guardar como instalador.php en ruta donde crearemos los proyectos Symfony2 (Ej: 
C:www) 
3. Abrir cmd, situarse sobre ruta (C:www) y ejecutar: php instalador.php
Instalando Composer (W) II 
3.1. Si no va: Añadir al final del path de variables del sistema (equipo → botón derecho 
propiedades → configuración avanzada del sistema → variables de entorno → path → 
añadir al final: ;C:xamppphp; 
4. Una vez hecho el paso 3, ya tendremos composer instalado:
Instalando Composer (W) III 
5. Para poder ejecutar composer desde varios sitios → moverlo a xampp/php 
6. También crear en xampp/php un fichero composer.bat que contenga: 
@ECHO OFF 
php "%~dp0composer.phar" %* 
7. Para actualizar composer: Ejecutar en consola: composer self-update
Instalando Composer (L) I 
Partiendo de: LAMP → OK 
1. Abrir consola de comandos y acceder al directorio raíz del proyecto Sf2 
2. Ejecutar el comando: 
$ curl -s https://getcomposer.org/installer | php 
3. Si todo ha ido bien, en el directorio raíz del proyecto Sf2 aparecerá un archivo 
llamado composer.phar. Para comprobar que se ha instalado correctamente, 
ejecuta el siguiente comando que muestra el menú de opciones de Composer: 
$ php composer.phar 
4. Instalar Composer de esta manera es correcto, pero obliga a realizar una nueva 
instalación para cada proyecto Symfony2. Si tienes muchos proyectos, es mucho 
mejor que instales Composer de forma global en tu ordenador, para que todos los 
proyectos utilicen la misma versión de Composer.
Instalando Composer (L) II 
5. Para instalar Composer globalmente, mover el archivo composer.phar a algún 
directorio ejecutable del sistema, como por ejemplo: 
$ sudo mv composer.phar /usr/local/bin/composer 
6. Comprobar que todo funciona bien ejecutando el comando composer sin opciones 
desde cualquier directorio del sistema. 
7. La instalación global de Composer también facilita su mantenimiento, ya que sólo 
hay que ejecutar el siguiente comando para actualizar la versión de Composer de todos 
los proyectos: 
$ sudo composer self-update
Descargando Symfony 2 (W) 
● Si no tienes Git → ¡Instálalo! (http://msysgit.github.io/) 
● Si ya tienes Git → ¡Vamos! 
Para instalar Symfony 2 en consola ejecutaremos el comando: 
php composer.phar create-project symfony/framework-standard-edition 
C:/www/nombreProyecto/ 2.5.0 
1. composer: Para ejecutar las funcionalidades de composer 
2. create-project:Ésta funcionalidad le dice a composer que cree un nuevo proyecto 
3. symfony/framework-standard-edition:Con ésto especificamos a composer que queremos 
instalar la versión standar edition de Symfony del packagist 
4. path/: Ruta donde se tiene que instalar el proyecto 
5. 2.5.0: Versión de Symfony a instalar 
Para comprobar si el equipo está preparado para ejecutar Symfony 2, una vez 
finalizado ejecutaremos el comando: 
php app/check.php
Descargando Symfony 2 (L) I 
● Si no tienes Git → ¡Instálalo! (http://msysgit.github.io/) 
● Si ya tienes Git → ¡Vamos! 
Para instalar Symfony 2 en consola ejecutaremos el comando: 
$ composer create-project symfony/framework-standard-edition 
<directorio> 2.5.0 
1. composer: Para ejecutar las funcionalidades de composer 
2. create-project:Ésta funcionalidad le dice a composer que cree un nuevo proyecto 
3. symfony/framework-standard-edition:Con ésto especificamos a composer que queremos 
instalar la versión standar edition de Symfony del packagist 
4. <directorio>: Ruta donde se tiene que instalar el proyecto 
5. 2.5.0: Versión de Symfony a instalar 
Para comprobar si el equipo está preparado para ejecutar Symfony 2, ejecutaremos el 
comando: 
php app/check.php
Descargando Symfony 2 (L) II 
Si todo ha funcionado bien, Symfony 2 ya está instalado correctamente. Para 
comprobarlo, se debe ejecutar el siguiente comando de consola directamente en la raíz 
del directorio donde se ha instalado Symfony: 
$ php app/console 
La consola debería mostrar una lista muy larga con todos los comandos disponibles en 
las aplicaciones Symfony2.
Consideraciones I 
● Algunas configuraciones: 
o php.ini: habilitar php_openssl.dll (extension=php_openssl.dll) 
o habilitar intl extension 
o instalar acelerador PHP (APC) 
o los directorios app/cache y app/logs deben tener permisos de 
escritura 
● Cambios en apache configurar virtualhost o cambiar → en httpd.conf: 
o DocumentRoot “C:/www/nombreProyecto/web” 
o Directory “C:/www/nombreProyecto/web” 
● Si todo ha ido bien...
Consideraciones II 
● Hasta que no se resuelvan los requerimientos obligatorios, no 
podremos ingresar a: 
o http://localhost/nombreProyecto/web/app_dev.php 
Y ver la pantalla de Bienvenida:
Estructura del Proyecto I 
● app: Contiene la configuración de 
todo el proyecto. Por lo general sólo 
existe una aplicación. El concepto de 
tener más de una aplicación en ésta 
versión se conoce como Bundle 
● appconfig: Guarda todos los archivos 
de configuración de la aplicación 
● appcache: Contiene todos los 
archivos generados por las numerosas 
cachés de Symfony2 (clases, 
enrutamiento, plantillas, entidades, 
validación, etc.). Junto con el 
directorio applogs es el único en el 
que Symfony2 debe tener permisos de 
escritura.
Estructura del Proyecto II 
● applogs: Contiene archivos de log por la app (tanto dev, prod, test, etc.). Junto 
con el directorio appcache es el único en el que Symfony2 debe tener permisos 
de escritura. 
● appResources: Almacena recursos muy especiales (Como alguna librería Java) o 
recursos utilizados por el proyecto a nivel global (layouts de las plantillas) 
● bin: Dentro existe el script vendors.sh que se utiliza para actualizar el framework 
vía consola 
● src: Carpeta donde irá todo nuestro código. Residen los Bundles. 
● vendor: Core del Framework y librerías de terceros 
● web: Contendrá los archivos públicos del proyecto (js, css, etc). También se 
encuentran los controladores frontales.
Controladores Frontales I 
● Un controlador frontal es un archivo mediante el que se accede a 
una página. 
● Symfony maneja entornos, lo que indica: 
o Mismas páginas Distintas → configuraciones 
● Entornos configurados por defecto: 
o Desarrollo: 
http://localhost/nombreProyecto/web/app_dev.php 
o Producción: http://localhost/nombreProyecto/web/app.php 
o Test
Controladores Frontales II 
● Los archivos que no estén dentro de la carpeta web no pueden y no 
deben ser accedidos por navegador. 
● Las páginas y programas de dentro la carpeta src no son directamente 
accedidos por el navegador, sino a través de los controladores frontales. 
● Cualquier petición (request) que llegue a la aplicación para solicitar una 
página específica debe ser sobre nuestros controladores y no 
directamente a ellas. Esto es debido a que los controladores frontales 
levantan todas la utilidades necesarias del Framework y luego invocan a 
la página solicitada.
Entornos 
● Desarrollo 
o http://localhost/nombreProyecto/web/app_dev.php 
● Producción 
o http://localhost/nombreProyecto/web/app.php 
Diferencias: 
● Desarrollo: Configuración para Desarrollador 
● Producción: Optimizado para usuarios finales 
Anotación: 
● En caso de que, al ingresar a la URL de producción y aparezca un error se 
puede probar a eliminar el contenido de la carpeta appcache
Caché 
● Symfony pre-compila las páginas y las almacena en caché. 
● Los archivos se generan en PHP 
● Los archivos se guardan dentro de la carpeta appcache 
Para producción: 
● Una vez creados los archivos, las páginas son accedidas por caché 
Para desarrollo: 
● La caché se genera por cada petición de las páginas para no tener que 
estar borrándola constantemente 
Para borrar la caché: 
● Eliminar el contenido de la carpeta appcache
Profiler 
● Herramienta activa sólo para el entorno de desarrollo. 
● Proporciona información de cada petición como: 
o Parámetros del Request 
o Sentencias SQL ejecutadas 
o Tiempos transcurridos 
o Datos de sesión 
o etc.
Mensajes de Error I 
● Symfony mostrará más información de los errores en el entorno 
de desarrollo que en producción. 
Ejemplo para página no existente: 
● En desarrollo: Aparecerá un StackTrace completo 
● En producción: Error 404
Mensajes de Error II 
Entorno de desarrollo:
Aplicando la filosofía de Symfony 
Antes de empezar a programar la aplicación se deben adaptar a Sf: 
● Funcionalidades 
● Wireframes o Mockups 
● El orden recomendado para la filosofía de Symfony 
es: 
1. Definir las entidades 
2. Definir los bundles 
3. Enrutamiento
Entidades 
● Ejemplo:
¿Qué son los Bundles? 
● Carpetas que contienen los archivos necesarios para un grupo de 
funcionalidades específicas 
● “Paquetes” con una estructura definida, que puede contener 
cualquier cosa e implementa una funcionalidad. 
● Permiten utilizar bundles de terceros y compartir los bundles 
propios entre distintos proyectos
Bundles en Symfony I 
● Algunos de los bundles incluídos en la Standard Edition: 
o Assetic: gestor de “assets” (CSS’s, JS, Imágenes, etc.) para 
PHP 5.3 
o Doctrine: ORM (Object Relational Mapping) 
o Monolog: Sistema de logs 
o SwiftMailer: Envío de mails 
o Twig: Lenguaje de plantillas 
● Para ver los bundles existentes, ver en el fichero AppKernel.php 
dentro de la carpeta app del proyecto
Bundles en Symfony II 
● Una aplicación en Symfony2 podrá contener todos los bundles que se necesiten, 
simplemente se deben crear y registrar. 
● Todos los bundles deben ir dentro de la carpeta src del proyecto, mientras que los 
Bundles de terceros deberán ir dentro de la carpeta vendor. 
● Un Bundle tiene una estructura de carpetas y archivos definidos y un nombre 
identificador dentro de nuestro proyecto que lo utilizaremos varias veces para 
hacer referencia al mismo. 
● La versión estándar de Symfony2 viene ya con un Bundle de ejemplo llamado 
AcmeBundle y es el que se ejecuta al ingresar a 
http://localhost/Symfony/web/app_dev.php dando la bienvenida.
Bundles en Symfony III 
● Nosotros crearemos nuestro propio Bundle pero para esto haremos una pequeña 
modificación en el archivo appconfigrouting_dev.yml en donde buscaremos las 
siguientes líneas: 
_welcome: 
pattern: / 
defaults: { _controller: AcmeDemoBundle:Welcome:index } 
y las reemplazaremos por 
_welcome: 
pattern: /bienvenida 
defaults: { _controller: AcmeDemoBundle:Welcome:index }
Bundles en Symfony IV 
● Con esto lo que se consigue es liberar la dirección: 
http://localhost/Symfony/web/app_dev.php que corresponde a la bienvenida. 
● Ahora para ingresar a esta página se debe escribir: 
http://localhost/Symfony/web/app_dev.php/bienvenida en lugar de la anterior. 
● Con ésto, se puede usar la dirección URL anterior para nuestro Bundle. Ahora 
ingresando a la primera dirección debería dar un error 404 ya que no existe página 
asignada a esa ruta.
El comando console 
● Para poder crear un bundle se utilizará una utilidad de Symfony llamada “console” 
● Alguna funcionalidad de “console”: 
1. Abrir consola y entrar al directorio del proyecto 
2. Situarse sobre la carpeta del proyecto y ejecutar el siguiente comando: 
a. php appconsole --version 
3. Al ejecutar esto se nos mostrará un texto similar a: Symfony version 2.5.0 – 
app/dev/debug 
4. El archivo appconsole no es nada más que un script PHP que ejecuta varias tareas 
(tasks) dependiendo de los parámetros que le pasemos (como por ejemplo el 
parámetro “–-version”). 
5. Existen muchas tareas que Symfony puede hacer por nosotros. Para verlas todas 
simplemente puedes hacerlo ejecutando el script sin pasarle parámetros: 
C:wwwMDW >php appconsole
Crear un Bundle I 
1. Situarse sobre la ruta del proyecto y ejecutar el comando: 
a. php appconsole generate:bundle 
2. Con este comando se ejecutará un generador que nos hará varias preguntas para 
crear nuestro Bundle como se muestra a continuación:
Crear un Bundle II 
1. Namespace o carpeta contenedora del Bundle 
formada por: Carpeta del proyectonombreBundle 
2. Identificador del Bundle. El sistema propone 
entre corchetes la concatenación 
proyectoNombreBundle. Para aceptar → enter 
3. Ubicación del bundle. Aceptar 
4. Formato de archivo que usará para las 
configuraciones del Bundle. Propone 
[annotations] pero le diremos que queremos que 
sea “yml”. 
5. ¿Generar estructura completa para el bundle? 
a. Sí, si se necesita 
b. No, por defecto
Crear un Bundle III 
6. Confirmamos si todo esta bien. 
7. ¿Queremos registrar nuestro 
Bundle en el archivo appAppKernel.php? → Sí 
8. ¿Queremos actualizar el archivo 
appconfigrouting.yml? → Sí
Crear un Bundle IV 
● Dentro de la carpeta src se crearía una carpeta 
correspondiente a el nombre del proyecto y dentro 
nuestro Bundle con sus carpetas y archivos necesarios. 
● El identificador del bundle sería, por ejemplo: 
“MDWDemoBundle”. 
● En el archivo AppKernel.php si lo abrieramos, veríamos 
una línea que apuntaría al archivo 
MDWDemoBundle.php. Lo que hace es habilitarlo para 
el proyecto.
Crear un Bundle IV 
● Todo Bundle nuevo o de terceros que incluyamos al proyecto deben 
ser registrados agregando la línea: 
o $bundles = array( 
... 
new MDWManualBundleMDWDemoBundle(), 
); 
● Por último también se agregarían las siguientes líneas al archivo 
appconfigrouting.yml 
o MDWDemoBundle: 
resource: 
“@MDWDemoBundle/Resources/config/routing.yml" 
prefix: /
Creando el Esquema I 
Recordando el modelo de Ejemplo:
La Base de Datos
El enrutador (Routing Component) I 
● Enrutando 
o URL’s feas: index.php?article_id=27 
o URL’s bonitas: /leer/intro-a-symfony 
● Flexibilidad 
o Para cambiar la URL de una página /blog a 
/noticias. ¿Cuántos enlaces necesitas actualizar 
para hacer el cambio? Con el enrutador de Symfony 
el cambio es sencillo.
El enrutador (Routing Component) II 
● En acción: 
o Una ruta es un mapa desde un patrón URL hasta un 
controlador.
El enrutador (Routing Component) III
El enrutador (Routing Component) IV
La cara oculta del Routing
Rutas I 
Symfony carga todas las rutas de la aplicación desde un 
archivo de configuración de enrutado: app/config/routing.yml
Rutas II 
Muchas rutas pueden contener uno o más parámetros. 
Éstos pueden ser opcionales o no: 
No opcional Opcional
Rutas III 
Los requisitos de los parámetros son expresiones regulares, la complejidad y la 
flexibilidad de cada requisito depende de uno
Patrón de nomenclatura para controladores 
paquete:controlador:acción 
Por ejemplo, un valor _controller de AcmeBlogBundle:Blog:show
Comandos Útiles 
composer update 
php composer.phar require friendsofsymfony/user-bundle 1.3.4 
php app/console cache:clear --env=dev 
php app/console doctrine:schema:update --force 
php app/console doctrine:generate:entities 
MWD/DemoBundle/Entity/EnityName --no-backup 
php app/console doctrine:generate:entities MWD/DemoBundle/--no-backup
¡Eso es todo! ¡Muchas Gracias ^^ 
¿Os ha gustado? 
¡¡Pues ahora a seguir practicando!!
Bibliografía I 
● http://www.slideshare.net/mario21ic/taller-introduccion-symfony2?related=1&utm_cam 
paign=related&utm_medium=1&utm_source=1 
● http://www.slideshare.net/SymfonyZaragoza/crud-bsico-con-symfony-36780064?utm_cam 
paign=ss_search&utm_medium=qf1&utm_source=27&qid=876ad1ac-5f7c-40c9-8910-88252825 
d243&v=qf1&b=&from_search=27 
● http://www.slideshare.net/raulfraile/symfony2-framework-para-php5 
● http://www.maestrosdelweb.com/editorial/curso-symfony2-introduccion-instalacion 
● http://symfony.es/documentacion/ 
● http://symfony.com/doc/current/book/doctrine.html 
● Routing: 
http://www.slideshare.net/hydras_cs/clase-4-routing?qid=53f9a989-7cac-499e-af68-5010 
022ee87c&v=qf1&b=&from_search=5
Bibliografía II 
● Twig: 
o http://twig.sensiolabs.org/documentation 
o http://symfony.es/noticias/2012/06/07/desymfony2012-twig-los-mejores-tru 
cos-y-tecnicas-avanzadas/ 
o http://www.slideshare.net/2085020/twig-13706964?qid=d88c6912-4de6-471 
6-8973-11aaeef6a041&v=qf1&b=&from_search=2 
● Taller para practicar: 
o http://www.slideshare.net/mario21ic/taller-introduccion-symfony2?rela 
ted=1&utm_campaign=related&utm_medium=1&utm_source=1
Bibliografía III 
● APC: 
o http://gregrickaby.com/the-perfect-apc-configuration/ 
o http://dev.freshsite.pl/php-accelerators/apc.html 
o https://docs.moodle.org/22/en/Installing_APC_in_Windows

Más contenido relacionado

La actualidad más candente

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
 
Curso Php
Curso PhpCurso Php
Curso Php
larasaregune
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseño
Rightster
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad Web
Rightster
 
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
 
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
 
Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
Rafael Lobo
 
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
Rightster
 
9.laravel
9.laravel9.laravel
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
Fco Javier Núñez Berrocoso
 
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
luigiacarigua
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
Laura Yasmin Duran Cruz
 
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
 
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
luigiacarigua
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
Andy Dawson
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
csalazart
 
PHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHPPHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHP
Rightster
 
Programación en c primer programa en c
Programación en c primer programa en cProgramación en c primer programa en c
Programación en c primer programa en c
Free Lancer
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
Rodrigo Miranda
 

La actualidad más candente (20)

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
 
Curso Php
Curso PhpCurso Php
Curso Php
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseño
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad Web
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
 
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
 
Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
 
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
 
9.laravel
9.laravel9.laravel
9.laravel
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
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
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
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...
 
QUE ES PHP
QUE ES PHPQUE ES PHP
QUE ES PHP
 
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
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
 
PHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHPPHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHP
 
Programación en c primer programa en c
Programación en c primer programa en cProgramación en c primer programa en c
Programación en c primer programa en c
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
 

Destacado

Integrando Redis en aplicaciones Symfony2
Integrando Redis en aplicaciones Symfony2Integrando Redis en aplicaciones Symfony2
Integrando Redis en aplicaciones Symfony2
Ronny López
 
Symfony y Admin Generator
Symfony y Admin GeneratorSymfony y Admin Generator
Symfony y Admin GeneratorJavier López
 
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
hydras_cs
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
Mario IC
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
PHP Vigo
 
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
Kirill Chebunin
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápido
Carlos Granados
 
.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0
All Things Open
 
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...
Esri
 
Paty carbajal presentacion
Paty carbajal presentacionPaty carbajal presentacion
Paty carbajal presentacion
patty_bperdomo21
 
Eppur si muove - SIG Libre Girona
Eppur si muove - SIG Libre GironaEppur si muove - SIG Libre Girona
Eppur si muove - SIG Libre Girona
Jordi Graells
 
Herramientas publicación gis web poroceso y análisis
Herramientas publicación gis web   poroceso y análisisHerramientas publicación gis web   poroceso y análisis
Herramientas publicación gis web poroceso y análisis
Urban Data Analytics
 
Clase 1 introducción a symfony 2
Clase 1   introducción a symfony 2Clase 1   introducción a symfony 2
Clase 1 introducción a symfony 2hydras_cs
 
Modeliza de variables_climaticas2
Modeliza de variables_climaticas2Modeliza de variables_climaticas2
Modeliza de variables_climaticas2
Lucas83
 
Symfony2 admingenerator
Symfony2 admingeneratorSymfony2 admingenerator
Symfony2 admingenerator
symfony_bcn
 
Monografia Metodologia Agil XP
Monografia Metodologia Agil XPMonografia Metodologia Agil XP
Monografia Metodologia Agil XP
Jorw Yengle
 
Redis–symfony–barcelona–31 05-2012
Redis–symfony–barcelona–31 05-2012Redis–symfony–barcelona–31 05-2012
Redis–symfony–barcelona–31 05-2012symfony_bcn
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)
Javier Eguiluz
 
Web components
Web componentsWeb components
Web components
Rocío Muñoz
 

Destacado (20)

Integrando Redis en aplicaciones Symfony2
Integrando Redis en aplicaciones Symfony2Integrando Redis en aplicaciones Symfony2
Integrando Redis en aplicaciones Symfony2
 
Symfony y Admin Generator
Symfony y Admin GeneratorSymfony y Admin Generator
Symfony y Admin Generator
 
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
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
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
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápido
 
.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0
 
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...
Geografía como plataforma: API REST vs OGC y Geodatabases - Conferencia Esri ...
 
Paty carbajal presentacion
Paty carbajal presentacionPaty carbajal presentacion
Paty carbajal presentacion
 
Eppur si muove - SIG Libre Girona
Eppur si muove - SIG Libre GironaEppur si muove - SIG Libre Girona
Eppur si muove - SIG Libre Girona
 
Herramientas publicación gis web poroceso y análisis
Herramientas publicación gis web   poroceso y análisisHerramientas publicación gis web   poroceso y análisis
Herramientas publicación gis web poroceso y análisis
 
Clase 1 introducción a symfony 2
Clase 1   introducción a symfony 2Clase 1   introducción a symfony 2
Clase 1 introducción a symfony 2
 
Modeliza de variables_climaticas2
Modeliza de variables_climaticas2Modeliza de variables_climaticas2
Modeliza de variables_climaticas2
 
Symfony2 admingenerator
Symfony2 admingeneratorSymfony2 admingenerator
Symfony2 admingenerator
 
Monografia Metodologia Agil XP
Monografia Metodologia Agil XPMonografia Metodologia Agil XP
Monografia Metodologia Agil XP
 
Redis–symfony–barcelona–31 05-2012
Redis–symfony–barcelona–31 05-2012Redis–symfony–barcelona–31 05-2012
Redis–symfony–barcelona–31 05-2012
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)
 
Web components
Web componentsWeb components
Web components
 
Metodologia rad XP
Metodologia rad XPMetodologia rad XP
Metodologia rad XP
 

Similar a Symfony2 Formacion y primeros pasos

Apuntes php
Apuntes phpApuntes php
Apuntes php
Apuntes phpApuntes php
Apuntes php
Javi
 
Programacion en php atavez de ejemplos
Programacion en php atavez de ejemplosProgramacion en php atavez de ejemplos
Programacion en php atavez de ejemplos
Robert Rodriguez
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
Yaismel Miranda
 
Apuntes php.pdf ejemplos
Apuntes php.pdf ejemplosApuntes php.pdf ejemplos
Apuntes php.pdf ejemplos09941557841986
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
Caos PC
 
Programacion en php a traves de ejemplos
Programacion en php a traves de ejemplosProgramacion en php a traves de ejemplos
Programacion en php a traves de ejemplosCarlos Cruz Rincon
 
Symfony
SymfonySymfony
Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...
Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...
Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...
Ivan Luis Jimenez
 
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundoEjemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ivan Luis Jimenez
 
Manual php y_mysql
Manual php y_mysqlManual php y_mysql
Manual php y_mysql
johan reyes
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Fco Javier Núñez Berrocoso
 
Practica adicional
Practica adicionalPractica adicional
Practica adicional
AngelicaJimenezRoder
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoAndrés Amaya
 

Similar a Symfony2 Formacion y primeros pasos (20)

Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Programacion en php atavez de ejemplos
Programacion en php atavez de ejemplosProgramacion en php atavez de ejemplos
Programacion en php atavez de ejemplos
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
 
Php andmysql
Php andmysqlPhp andmysql
Php andmysql
 
Apuntes php.pdf ejemplos
Apuntes php.pdf ejemplosApuntes php.pdf ejemplos
Apuntes php.pdf ejemplos
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Programacion en php a traves de ejemplos
Programacion en php a traves de ejemplosProgramacion en php a traves de ejemplos
Programacion en php a traves de ejemplos
 
Ejemplos en php
Ejemplos en phpEjemplos en php
Ejemplos en php
 
Symfony
SymfonySymfony
Symfony
 
Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...
Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...
Ejemplo práctico de uso de Makefile en LINUX (Compilando modulos de holamundo...
 
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundoEjemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
 
Manual php y_mysql
Manual php y_mysqlManual php y_mysql
Manual php y_mysql
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Linux
LinuxLinux
Linux
 
Practica adicional
Practica adicionalPractica adicional
Practica adicional
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
Php andmysql (1)
Php andmysql (1)Php andmysql (1)
Php andmysql (1)
 

Último

Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
AbbieDominguezGirond
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 

Último (6)

Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 

Symfony2 Formacion y primeros pasos

  • 1. Symfony 2 Formación y primeros pasos Por: Sonia Benítez Martínez Web Developer @Neithar
  • 2. Índice I ● Introducción a Symfony ● Características ● Recordando MVC y ORM ● Twig ● YML ● Gestionando dependencias con Composer ● Instalando Composer (Windows) ● Instalando Composer (Linux) ● Descargando Symfony2(Windows) ● Descargando Symfony2(Linux)
  • 3. Índice II ● Consideraciones ● Estructura del proyecto ● Controladores Frontales ● Entornos ● Caché ● Profiler ● Mensajes de Error ● Aplicando la filosofía de Symfony ● Entidades ● ¿Qué son los Bundles?
  • 4. Índice III ● Bundles en Symfony ● El comando Console ● Crear un Bundle ● Creando el Esquema ● La Base de Datos ● El enrutador (Routing Component) ● La cara oculta del Routing ● Rutas ● Patrón de nomenclatura para controladores ● Comandos Útiles ● Bibliografía
  • 5. Introducción a Symfony ● Symfony es un Framework PHP desarrollado en PHP 5.3 ● Arquitectura MVC ● Creado por la comunidad liderada por Fabien Potencier ● Integra Frameworks como: o Doctrine o Twig ● Modelo: Doctrine, ORM basado en Hibernate ● Configuraciones en: o YAML, XML, PHP
  • 6. Características ● Open-source ● Muy flexible ● Extensible ● Completo ● Rápido ● Alto rendimiento ● Gran comunidad y documentación multiidioma ● Basado en buenas prácticas
  • 7. Recordando MVC (Modelo - Vista- Controlador) ● Vista: Visualización de la información, diseño, colores, estilos ● Modelado: Capa que se responsabiliza de la manipulación de los datos ● Controlador: Intermediario entre los dos anteriores: Procesa y muestra los datos obtenidos por el Modelo.
  • 8. ORM (Object-Relational Mapping) ● Doctrine: o Framework para tratar con BBDD o Conexión o Generación SQL o Manipulación datos o Transacciones o Desconexión
  • 9. Twig I o Motor y lenguaje de plantillas para PHP utilizado por defecto en Symfony2  Una plantilla es un archivo de texto que puede ser generado en el formato que se necesite (HTML, CSS, XML, ...) o Rápido: Twig minimiza la cantidad de código necesaria para producir el mismo efecto que con PHP puro. o Seguro: Twig sólo afecta a la construcción del template, no a la lógica de negocio, impidiendo la mala gestión de datos o errores. o Flexible: Permite al desarrollador definir sus propias etiquetas y filtros personalizados. o Sistema de herencia de plantillas y cacheo de plantillas
  • 10. Twig II o PHP es el mismo motor de templates (muy largo de escribir). o Ejemplo: <?php echo htmlspecialchars($var, ENT_QUOTES, ‘UTF-8’); ?> o Ésto en Twig: {{ var|e }} ¿Por qué otro motor de templates?
  • 11. Twig III : Sintaxis orientada a Templates o Hay muchos accesos directos (Shortcuts) para realizar acciones más comunes. o Un ejemplo de iteración sobre un array: {% for user in users %} {{ user.name }} {% else %} No users have been found. {% endfor %}
  • 12. Twig IV : Algunas Funcionalidades o Con Twig hay todas las opciones posibles a la hora de crear templates: existe herencia múltiple, bloques de código, escape automático, entre muchas otras funcionalidades: o Ejemplos: {% extends “MDWDemoBundle:Default:index.html.twig” %} {% block content %} Content of the page… {% endblock %}
  • 13. Twig V : Un poco de sintaxis ● Comentarios → {# Comentario #} ● Imprimir → {{ mostrar_algo }} → <?php echo $mostrar_algo; ?> ● Tags → {% hacer_algo %} → {% if online == false %} <p> Mainentance! </p> {% endif %} ● Filtros → {{ ‘my first car’|capitalize }} ● Funciones → {{ random(5) }} ● Tests → {# Se evalúa a true si la variable es null, false o cadena vacía #} {% if foo is empty %} … {% endif %}
  • 14. YAML I ● Lenguaje muy sencillo que permite describir los datos como en XML, pero en una sintaxis mucho más sencilla. ● Presenta un formato especialmente útil para describir datos que pueden ser transformados en arrays simples y asociativos. ● Ejemplo: o $casa = array(‘familia’ => array(‘apellido’ => ‘García’, ‘padres’ => array(‘Antonio, María’), ‘hijos’ => array(‘Jose’, Manuel, Carmen)), dirección => array(‘numero’ => 34, ‘calle’ => ‘Gran Via’, ‘ciudad’ => ‘Barcelona’, ‘codigopostal’ => ‘12345’ ) );
  • 16. Gestionando dependencias con Composer Vale, pero… ¿Qué es composer? ● Composer es un Gestor de Dependencias PHP ● Contiene una BBDD online de librerías de terceros ● La BBDD se centraliza en el repositorio Packagist ● 1 único archivo de config → descarga n librerías ● Ǝ Librerías como: Symfony, Wordpress, Drupal, etc.
  • 17. Instalando Composer (W) I Partiendo de: Xampp / Wampp → OK 1. Descargar composer: https://getcomposer.org/installer 2. Guardar como instalador.php en ruta donde crearemos los proyectos Symfony2 (Ej: C:www) 3. Abrir cmd, situarse sobre ruta (C:www) y ejecutar: php instalador.php
  • 18. Instalando Composer (W) II 3.1. Si no va: Añadir al final del path de variables del sistema (equipo → botón derecho propiedades → configuración avanzada del sistema → variables de entorno → path → añadir al final: ;C:xamppphp; 4. Una vez hecho el paso 3, ya tendremos composer instalado:
  • 19. Instalando Composer (W) III 5. Para poder ejecutar composer desde varios sitios → moverlo a xampp/php 6. También crear en xampp/php un fichero composer.bat que contenga: @ECHO OFF php "%~dp0composer.phar" %* 7. Para actualizar composer: Ejecutar en consola: composer self-update
  • 20. Instalando Composer (L) I Partiendo de: LAMP → OK 1. Abrir consola de comandos y acceder al directorio raíz del proyecto Sf2 2. Ejecutar el comando: $ curl -s https://getcomposer.org/installer | php 3. Si todo ha ido bien, en el directorio raíz del proyecto Sf2 aparecerá un archivo llamado composer.phar. Para comprobar que se ha instalado correctamente, ejecuta el siguiente comando que muestra el menú de opciones de Composer: $ php composer.phar 4. Instalar Composer de esta manera es correcto, pero obliga a realizar una nueva instalación para cada proyecto Symfony2. Si tienes muchos proyectos, es mucho mejor que instales Composer de forma global en tu ordenador, para que todos los proyectos utilicen la misma versión de Composer.
  • 21. Instalando Composer (L) II 5. Para instalar Composer globalmente, mover el archivo composer.phar a algún directorio ejecutable del sistema, como por ejemplo: $ sudo mv composer.phar /usr/local/bin/composer 6. Comprobar que todo funciona bien ejecutando el comando composer sin opciones desde cualquier directorio del sistema. 7. La instalación global de Composer también facilita su mantenimiento, ya que sólo hay que ejecutar el siguiente comando para actualizar la versión de Composer de todos los proyectos: $ sudo composer self-update
  • 22. Descargando Symfony 2 (W) ● Si no tienes Git → ¡Instálalo! (http://msysgit.github.io/) ● Si ya tienes Git → ¡Vamos! Para instalar Symfony 2 en consola ejecutaremos el comando: php composer.phar create-project symfony/framework-standard-edition C:/www/nombreProyecto/ 2.5.0 1. composer: Para ejecutar las funcionalidades de composer 2. create-project:Ésta funcionalidad le dice a composer que cree un nuevo proyecto 3. symfony/framework-standard-edition:Con ésto especificamos a composer que queremos instalar la versión standar edition de Symfony del packagist 4. path/: Ruta donde se tiene que instalar el proyecto 5. 2.5.0: Versión de Symfony a instalar Para comprobar si el equipo está preparado para ejecutar Symfony 2, una vez finalizado ejecutaremos el comando: php app/check.php
  • 23.
  • 24. Descargando Symfony 2 (L) I ● Si no tienes Git → ¡Instálalo! (http://msysgit.github.io/) ● Si ya tienes Git → ¡Vamos! Para instalar Symfony 2 en consola ejecutaremos el comando: $ composer create-project symfony/framework-standard-edition <directorio> 2.5.0 1. composer: Para ejecutar las funcionalidades de composer 2. create-project:Ésta funcionalidad le dice a composer que cree un nuevo proyecto 3. symfony/framework-standard-edition:Con ésto especificamos a composer que queremos instalar la versión standar edition de Symfony del packagist 4. <directorio>: Ruta donde se tiene que instalar el proyecto 5. 2.5.0: Versión de Symfony a instalar Para comprobar si el equipo está preparado para ejecutar Symfony 2, ejecutaremos el comando: php app/check.php
  • 25. Descargando Symfony 2 (L) II Si todo ha funcionado bien, Symfony 2 ya está instalado correctamente. Para comprobarlo, se debe ejecutar el siguiente comando de consola directamente en la raíz del directorio donde se ha instalado Symfony: $ php app/console La consola debería mostrar una lista muy larga con todos los comandos disponibles en las aplicaciones Symfony2.
  • 26. Consideraciones I ● Algunas configuraciones: o php.ini: habilitar php_openssl.dll (extension=php_openssl.dll) o habilitar intl extension o instalar acelerador PHP (APC) o los directorios app/cache y app/logs deben tener permisos de escritura ● Cambios en apache configurar virtualhost o cambiar → en httpd.conf: o DocumentRoot “C:/www/nombreProyecto/web” o Directory “C:/www/nombreProyecto/web” ● Si todo ha ido bien...
  • 27.
  • 28. Consideraciones II ● Hasta que no se resuelvan los requerimientos obligatorios, no podremos ingresar a: o http://localhost/nombreProyecto/web/app_dev.php Y ver la pantalla de Bienvenida:
  • 29.
  • 30. Estructura del Proyecto I ● app: Contiene la configuración de todo el proyecto. Por lo general sólo existe una aplicación. El concepto de tener más de una aplicación en ésta versión se conoce como Bundle ● appconfig: Guarda todos los archivos de configuración de la aplicación ● appcache: Contiene todos los archivos generados por las numerosas cachés de Symfony2 (clases, enrutamiento, plantillas, entidades, validación, etc.). Junto con el directorio applogs es el único en el que Symfony2 debe tener permisos de escritura.
  • 31. Estructura del Proyecto II ● applogs: Contiene archivos de log por la app (tanto dev, prod, test, etc.). Junto con el directorio appcache es el único en el que Symfony2 debe tener permisos de escritura. ● appResources: Almacena recursos muy especiales (Como alguna librería Java) o recursos utilizados por el proyecto a nivel global (layouts de las plantillas) ● bin: Dentro existe el script vendors.sh que se utiliza para actualizar el framework vía consola ● src: Carpeta donde irá todo nuestro código. Residen los Bundles. ● vendor: Core del Framework y librerías de terceros ● web: Contendrá los archivos públicos del proyecto (js, css, etc). También se encuentran los controladores frontales.
  • 32. Controladores Frontales I ● Un controlador frontal es un archivo mediante el que se accede a una página. ● Symfony maneja entornos, lo que indica: o Mismas páginas Distintas → configuraciones ● Entornos configurados por defecto: o Desarrollo: http://localhost/nombreProyecto/web/app_dev.php o Producción: http://localhost/nombreProyecto/web/app.php o Test
  • 33. Controladores Frontales II ● Los archivos que no estén dentro de la carpeta web no pueden y no deben ser accedidos por navegador. ● Las páginas y programas de dentro la carpeta src no son directamente accedidos por el navegador, sino a través de los controladores frontales. ● Cualquier petición (request) que llegue a la aplicación para solicitar una página específica debe ser sobre nuestros controladores y no directamente a ellas. Esto es debido a que los controladores frontales levantan todas la utilidades necesarias del Framework y luego invocan a la página solicitada.
  • 34. Entornos ● Desarrollo o http://localhost/nombreProyecto/web/app_dev.php ● Producción o http://localhost/nombreProyecto/web/app.php Diferencias: ● Desarrollo: Configuración para Desarrollador ● Producción: Optimizado para usuarios finales Anotación: ● En caso de que, al ingresar a la URL de producción y aparezca un error se puede probar a eliminar el contenido de la carpeta appcache
  • 35. Caché ● Symfony pre-compila las páginas y las almacena en caché. ● Los archivos se generan en PHP ● Los archivos se guardan dentro de la carpeta appcache Para producción: ● Una vez creados los archivos, las páginas son accedidas por caché Para desarrollo: ● La caché se genera por cada petición de las páginas para no tener que estar borrándola constantemente Para borrar la caché: ● Eliminar el contenido de la carpeta appcache
  • 36. Profiler ● Herramienta activa sólo para el entorno de desarrollo. ● Proporciona información de cada petición como: o Parámetros del Request o Sentencias SQL ejecutadas o Tiempos transcurridos o Datos de sesión o etc.
  • 37.
  • 38. Mensajes de Error I ● Symfony mostrará más información de los errores en el entorno de desarrollo que en producción. Ejemplo para página no existente: ● En desarrollo: Aparecerá un StackTrace completo ● En producción: Error 404
  • 39. Mensajes de Error II Entorno de desarrollo:
  • 40. Aplicando la filosofía de Symfony Antes de empezar a programar la aplicación se deben adaptar a Sf: ● Funcionalidades ● Wireframes o Mockups ● El orden recomendado para la filosofía de Symfony es: 1. Definir las entidades 2. Definir los bundles 3. Enrutamiento
  • 42. ¿Qué son los Bundles? ● Carpetas que contienen los archivos necesarios para un grupo de funcionalidades específicas ● “Paquetes” con una estructura definida, que puede contener cualquier cosa e implementa una funcionalidad. ● Permiten utilizar bundles de terceros y compartir los bundles propios entre distintos proyectos
  • 43. Bundles en Symfony I ● Algunos de los bundles incluídos en la Standard Edition: o Assetic: gestor de “assets” (CSS’s, JS, Imágenes, etc.) para PHP 5.3 o Doctrine: ORM (Object Relational Mapping) o Monolog: Sistema de logs o SwiftMailer: Envío de mails o Twig: Lenguaje de plantillas ● Para ver los bundles existentes, ver en el fichero AppKernel.php dentro de la carpeta app del proyecto
  • 44.
  • 45. Bundles en Symfony II ● Una aplicación en Symfony2 podrá contener todos los bundles que se necesiten, simplemente se deben crear y registrar. ● Todos los bundles deben ir dentro de la carpeta src del proyecto, mientras que los Bundles de terceros deberán ir dentro de la carpeta vendor. ● Un Bundle tiene una estructura de carpetas y archivos definidos y un nombre identificador dentro de nuestro proyecto que lo utilizaremos varias veces para hacer referencia al mismo. ● La versión estándar de Symfony2 viene ya con un Bundle de ejemplo llamado AcmeBundle y es el que se ejecuta al ingresar a http://localhost/Symfony/web/app_dev.php dando la bienvenida.
  • 46. Bundles en Symfony III ● Nosotros crearemos nuestro propio Bundle pero para esto haremos una pequeña modificación en el archivo appconfigrouting_dev.yml en donde buscaremos las siguientes líneas: _welcome: pattern: / defaults: { _controller: AcmeDemoBundle:Welcome:index } y las reemplazaremos por _welcome: pattern: /bienvenida defaults: { _controller: AcmeDemoBundle:Welcome:index }
  • 47. Bundles en Symfony IV ● Con esto lo que se consigue es liberar la dirección: http://localhost/Symfony/web/app_dev.php que corresponde a la bienvenida. ● Ahora para ingresar a esta página se debe escribir: http://localhost/Symfony/web/app_dev.php/bienvenida en lugar de la anterior. ● Con ésto, se puede usar la dirección URL anterior para nuestro Bundle. Ahora ingresando a la primera dirección debería dar un error 404 ya que no existe página asignada a esa ruta.
  • 48. El comando console ● Para poder crear un bundle se utilizará una utilidad de Symfony llamada “console” ● Alguna funcionalidad de “console”: 1. Abrir consola y entrar al directorio del proyecto 2. Situarse sobre la carpeta del proyecto y ejecutar el siguiente comando: a. php appconsole --version 3. Al ejecutar esto se nos mostrará un texto similar a: Symfony version 2.5.0 – app/dev/debug 4. El archivo appconsole no es nada más que un script PHP que ejecuta varias tareas (tasks) dependiendo de los parámetros que le pasemos (como por ejemplo el parámetro “–-version”). 5. Existen muchas tareas que Symfony puede hacer por nosotros. Para verlas todas simplemente puedes hacerlo ejecutando el script sin pasarle parámetros: C:wwwMDW >php appconsole
  • 49. Crear un Bundle I 1. Situarse sobre la ruta del proyecto y ejecutar el comando: a. php appconsole generate:bundle 2. Con este comando se ejecutará un generador que nos hará varias preguntas para crear nuestro Bundle como se muestra a continuación:
  • 50. Crear un Bundle II 1. Namespace o carpeta contenedora del Bundle formada por: Carpeta del proyectonombreBundle 2. Identificador del Bundle. El sistema propone entre corchetes la concatenación proyectoNombreBundle. Para aceptar → enter 3. Ubicación del bundle. Aceptar 4. Formato de archivo que usará para las configuraciones del Bundle. Propone [annotations] pero le diremos que queremos que sea “yml”. 5. ¿Generar estructura completa para el bundle? a. Sí, si se necesita b. No, por defecto
  • 51. Crear un Bundle III 6. Confirmamos si todo esta bien. 7. ¿Queremos registrar nuestro Bundle en el archivo appAppKernel.php? → Sí 8. ¿Queremos actualizar el archivo appconfigrouting.yml? → Sí
  • 52. Crear un Bundle IV ● Dentro de la carpeta src se crearía una carpeta correspondiente a el nombre del proyecto y dentro nuestro Bundle con sus carpetas y archivos necesarios. ● El identificador del bundle sería, por ejemplo: “MDWDemoBundle”. ● En el archivo AppKernel.php si lo abrieramos, veríamos una línea que apuntaría al archivo MDWDemoBundle.php. Lo que hace es habilitarlo para el proyecto.
  • 53. Crear un Bundle IV ● Todo Bundle nuevo o de terceros que incluyamos al proyecto deben ser registrados agregando la línea: o $bundles = array( ... new MDWManualBundleMDWDemoBundle(), ); ● Por último también se agregarían las siguientes líneas al archivo appconfigrouting.yml o MDWDemoBundle: resource: “@MDWDemoBundle/Resources/config/routing.yml" prefix: /
  • 54. Creando el Esquema I Recordando el modelo de Ejemplo:
  • 55.
  • 56.
  • 57.
  • 58.
  • 59. La Base de Datos
  • 60. El enrutador (Routing Component) I ● Enrutando o URL’s feas: index.php?article_id=27 o URL’s bonitas: /leer/intro-a-symfony ● Flexibilidad o Para cambiar la URL de una página /blog a /noticias. ¿Cuántos enlaces necesitas actualizar para hacer el cambio? Con el enrutador de Symfony el cambio es sencillo.
  • 61. El enrutador (Routing Component) II ● En acción: o Una ruta es un mapa desde un patrón URL hasta un controlador.
  • 62. El enrutador (Routing Component) III
  • 63. El enrutador (Routing Component) IV
  • 64. La cara oculta del Routing
  • 65. Rutas I Symfony carga todas las rutas de la aplicación desde un archivo de configuración de enrutado: app/config/routing.yml
  • 66. Rutas II Muchas rutas pueden contener uno o más parámetros. Éstos pueden ser opcionales o no: No opcional Opcional
  • 67. Rutas III Los requisitos de los parámetros son expresiones regulares, la complejidad y la flexibilidad de cada requisito depende de uno
  • 68. Patrón de nomenclatura para controladores paquete:controlador:acción Por ejemplo, un valor _controller de AcmeBlogBundle:Blog:show
  • 69. Comandos Útiles composer update php composer.phar require friendsofsymfony/user-bundle 1.3.4 php app/console cache:clear --env=dev php app/console doctrine:schema:update --force php app/console doctrine:generate:entities MWD/DemoBundle/Entity/EnityName --no-backup php app/console doctrine:generate:entities MWD/DemoBundle/--no-backup
  • 70. ¡Eso es todo! ¡Muchas Gracias ^^ ¿Os ha gustado? ¡¡Pues ahora a seguir practicando!!
  • 71. Bibliografía I ● http://www.slideshare.net/mario21ic/taller-introduccion-symfony2?related=1&utm_cam paign=related&utm_medium=1&utm_source=1 ● http://www.slideshare.net/SymfonyZaragoza/crud-bsico-con-symfony-36780064?utm_cam paign=ss_search&utm_medium=qf1&utm_source=27&qid=876ad1ac-5f7c-40c9-8910-88252825 d243&v=qf1&b=&from_search=27 ● http://www.slideshare.net/raulfraile/symfony2-framework-para-php5 ● http://www.maestrosdelweb.com/editorial/curso-symfony2-introduccion-instalacion ● http://symfony.es/documentacion/ ● http://symfony.com/doc/current/book/doctrine.html ● Routing: http://www.slideshare.net/hydras_cs/clase-4-routing?qid=53f9a989-7cac-499e-af68-5010 022ee87c&v=qf1&b=&from_search=5
  • 72. Bibliografía II ● Twig: o http://twig.sensiolabs.org/documentation o http://symfony.es/noticias/2012/06/07/desymfony2012-twig-los-mejores-tru cos-y-tecnicas-avanzadas/ o http://www.slideshare.net/2085020/twig-13706964?qid=d88c6912-4de6-471 6-8973-11aaeef6a041&v=qf1&b=&from_search=2 ● Taller para practicar: o http://www.slideshare.net/mario21ic/taller-introduccion-symfony2?rela ted=1&utm_campaign=related&utm_medium=1&utm_source=1
  • 73. Bibliografía III ● APC: o http://gregrickaby.com/the-perfect-apc-configuration/ o http://dev.freshsite.pl/php-accelerators/apc.html o https://docs.moodle.org/22/en/Installing_APC_in_Windows