Symfony: Framework para desarrollo en PHP5



Documentos relacionados
DISEÑO E IMPLEMENTACIÓN DE UNA BASE DE DATOS PARA LA ONG ASEM

Problemas comunes en la integración del módulo V.me by Visa en Prestashop

PRESENTACIÓN DEL PRODUCTO

tip ddy Web Apps Marketing Curso: Symfony2 Inicio Septiembre

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

Manual de Administración Solución ADSL Profesional

GIT Dinahosting 3. Hola!

MANUAL PARA INCLUIR EL MOTOR DE RESERVAS EN LA WEB DEL ESTABLECIMIENTO

Toda base de datos relacional se basa en dos objetos

Framework para el desarrollo ágil de aplicaciones

Curso. Inicio. Desarrollo de Aplicaciones Web con Symfony2. II Versión

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

- MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD. Rev. 01- FEBRERO 2013

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

02 Búsqueda, selección y evaluación de proveedores

INSTALACIÓN A3ERP INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Symfony Entorno de trabajo para el desarrollo de aplicaciones. Rodolfo Campos

Escudo Movistar Guía Rápida de Instalación Para Windows

EL FRAMEWORK SYMFONY. La Arquitectura Modelo-Vista-Controlador (MVC) Symfony 1.2. SYMFONY se basa en el diseño web a tres capas MVC.

Búsqueda del framework ideal de PHP

- MANUAL TÉCNICO - Implantación de software de Marketing Online

3. Qué necesitamos para usar Wordpress?

Introducción a PHP. * No es necesario declarar previamente las variables.

Symfony2. Junio. Inicio. Curso Desarrollo de aplicaciones web con. Básico-Intermedio

Tutorial rápido de. acceso a la plataforma virtual

MANUAL DE PHPMYADMIN

BREVE INTRODUCCION A ASP.NET MVC

Nº de expediente: TSI Subprograma: Avanza Competitividad I+D+I

PROGRAMA FORMATIVO MICROSOFT ACCESS 2003 (COMPLETO)

CAPÍTULO 3 VISUAL BASIC

Índice de contenido. Manual de administración de hospedaje para administradores de dominios

DESARROLLA TU BLOG O PÁGINA

ÁLAMO SOFTWARE PARA GESTIÓN INMOBILIARIA

MANUAL DE. manual de Joomla JOOMLA

PROGRAMACIÓN PÁGINAS WEB CON PHP

Curso de PHP con MySQL Gratis

Animalandia. Manual de instalación. (Actualizado: Sept-2015) Fernando Lisón Martín

Laboratorio de Redes y Sistemas Operativos Laravel 5.0

Manual de usuario Versión: 1.3 Edición: 05/02/2015 1

Guía de Uso. Office Depot Online Internet, fácil y sencillo

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian

Lección 1 Introducción a Struts. uacosta@globalmentoring.com.mx

Manual hosting acens

Capitulo 5. Implementación del sistema MDM

MANUAL SINCRONIZADOR LEKOMMERCE FACTUSOL

Unidad 3. NORMALIZACIÓN.

Curso PHP Módulo 1 R-Luis

Curso de Spring Framework

Distribuidor de documentos 1. Ventajas. Distribuidor de documentos

D.T.Informática S.L. [Sistema hada] hilo Administrador Desarrollo Activo

Gestión de Extensiones en Joomla!

DOCENTES FORMADORES UGEL 03 PRIMARIA

PROGRAMA FORMATIVO MICROSOFT ACCESS 2007 (COMPLETO)

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

Manual técnico. Preparado para: Duonet Preparado por: Jaime Glez.-Manjoya Menendez. 27 de octubre de 2010 Número de propuesta: duo-0001

PÁGINAS DINÁMICAS WEB CON PHP. Unidad 1 FUNDAMENTOS DE PHP

Cómo ingresar a la Intranet?

TEMA 1.- Conceptos Generales y Entorno de Trabajo Objetivo

Creación y administración de grupos locales

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Presentación y Planificación del Proyecto: Administración de Calzado

Manual de Uso XML-Whois de Neubox. Manual del Sistema de XML Whois de Neubox Versión

Conceptos Generales en Joomla

ArquitecturaTécnica de TRAVEL OPEN APPS. Breve definición técnica de la plataforma Travel Open Apps

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

CONCLUISIONES Y RECOMENDACIONES

PROCEDIMIENTO DE ENLACE NOMIPAQ

CÓMO MANEJAR SU NUEVO SITIO WEB SOBRE DRUPAL Manual técnico y de usuario. Pontificia Universidad Javeriana Grupo PSU CDI

Manual de Desarrollado de Módulos en Español. Version Beta. Escrito por: Bruno Macias V.

Diseño de páginas web 2011

Manual del Usuario Groupware

FOROS. Manual de Usuario

Análisis y diseño del sistema CAPÍTULO 3

Avanzado. tip. ddy. Informaciones Human Business Fonos: / informaciones@hbusiness.cl Web:

Puesta en Marcha versión Monousuario

Manual de NVU Capítulo 5: Las hojas de estilo

Manual del Usuario. Portal Web Para uso exclusivo de Ministros de Estado.

INTRODUCCIÓN A PHP. Javier Enciso

IDENTIFICACIÓN DE LA ACTIVIDAD PEDAGÓGICA

Tutorial: Primeros Pasos con Subversion

Manual de NetBeans y XAMPP

Adobe Dreamweaver CS3 - Curso online Creación profesional de sitios web

Sesión 17. FRAMEWORKS

Resumen ÁREA DE FACTURACIÓN::INFORMES::Pedidos Detalle Resumen ÁREA DE

FILTRO ANTISPAM GUÍA DE CONFIGURACIÓN PARA CUENTAS IMAP

Guía de Moodle para Estudiantes

G R U P O S INDICE Cómo crear una cuenta en ARQA? Cómo tener un grupo en ARQA? Secciones y funcionalidades de los grupos Configuración del grupo

Manual de migración a Joomla! 3.4.0

SMS Gestión. manual de uso

Instalación y mantenimiento de servicios de Internet. U.T.3.- Servicio DNS

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

Manual de uso de Moodle para alumnos

Administración de portales Joomla (II)

MANTENIMIENTO DE TABLAS EN PHP y MYSQL (CRUD)

ESOFT 3 Nice Screen Scraper: Web service, Console client and Web client

Herramientas CONTENIDOS. MiAulario

Gestor de Contenidos CMS. Prof: Ing. Henrry Servitá

Transcripción:

@raulfraile

Índice - Qué es un framework y por qué utilizarlo? Frameworks PHP Symfony y Symfony2 Primer proyecto con Symfony2 Características interesantes de Symfony2 Enlaces de interés

Qué es un framework y por qué utilizarlo? Conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular, que sirve como referencia para enfrentar y resolver nuevos problemas de índole similar. Un framework simplifica el desarrollo de una aplicación mediante la automatización de algunos de los patrones utilizados para resolver las tareas comunes. Además, proporciona estructura al código fuente, forzando al desarrollador a crear código más legible y más fácil de mantener. Por último, facilita la programación de aplicaciones, ya que encapsula operaciones complejas en instrucciones sencillas.

Problemas en la fase de desarrollo Definir una estructura lógica del proyecto - Crear una estructura de directorios propia Dividimos por módulos? Cada módulo en su carpeta? Cómo mapeamos la base de datos? Dónde metemos los tests unitarios? Cómo llamamos a la carpeta de imágenes? En definitiva: Organización del proyecto Problema: Si entra una persona nueva al proyecto hay que explicárselo TODO

Problemas en la fase de desarrollo Separación de la lógica de negocio y la presentación Aplicaciones web con un.php por cada página, que accede a base de datos, obtiene los resultados y genera el HTML, todo en el mismo fichero... Una posible solución: Modelo Vista Controlador (MVC)

Modelo Vista Controlador Puerta de entrada a la aplicación: p.ej.: index.php Representación de los datos Acceso a los datos p.ej.: código HTML, RSS... p.ej.: base de datos, servicios Web, ficheros externos...

Problemas en la fase de desarrollo Dependencia del tipo de base de datos A no ser que utilicemos alguna librería para acceso a base de datos, nuestras consultas serán dependientes de la base de datos utilizada. Un cambio de tipo de base de datos (p.ej. De MySQL a SQL Server) nos obligaría a revisar las consultas. Mapeado de la base de datos Tendremos que crear una serie de clases para mapear las tablas de la base de datos (p.ej. Tabla Producto, class.producto.php). Un cambio en las tablas obliga a modificar las clases.

Problemas en la fase de desarrollo Detección de bugs Conforme la aplicación va creciendo se va ensuciando y cada vez es más dificil encontrar los errores. Los tests unitarios y la obligación de mantener la estructura pueden facilitar la tarea. Publicar la aplicación Si no utilizamos una herramienta tipo Ant o Phing se pueden producir errores al olvidar subir algún archivo modificado o en orden incorrecto.

Problemas en la fase de desarrollo Formularios Tareas repetitivas de validar los datos introducidos, mostrar mensajes de error, no perder los datos introducidos cuando se produce un error...

Frameworks PHP framework.zend.com cakephp.org yiiframework.com akelos.org symfony-project.org codeigniter.com

Qué es Symfony? - Framework PHP5 Creado por Fabien Potencier en 2007. Open-source Muy utilizado Comunidad muy grande Buena documentación Basado en buenas prácticas

Symfony Versiones

Proyecto nuevo o actualización? Entonces uso Symfony 1.4 o Symfony2? DEPENDE... Cuándo va a estar en producción? Cuál es la versión actual de PHP?

Entonces uso Symfony 1.4 o Symfony2? Opinión personal: Aprender Symfony2 - La PR4 de Symfony2 tiene TODO lo que tendrá la versión final. va a ser mejor que - Symfony2 le va a dar 1.000 patadas a Symfony 1.4

Problemas de Symfony 1.4: Muchos archivos Configuración compleja Dificil de aprender Formularios Rendimiento

Symfony2 soluciona estos problemas: - Menos archivos Mucho más fácil de aprender Más flexible Completo Utilización de estándares (PHPUnit, Zend_Cache, Zend_Logger, PHP 5.3 autoload, Java JSR303)

Primer proyecto con Symfony2

Crear un proyecto con Symfony2 1) Bajar el sandbox GIT: git clone http://github.com/symfony/symfony-sandbox.git SVN: checkout http://svn.symfony-project.com/branches/2.0 URL: http://symfony-reloaded.org/downloads/sandbox_2_0_pr4.zip (*.tgz)

Crear un proyecto con Symfony2 Una carpeta por cada aplicación Algunos scripts TODO el código de la aplicación Carpeta pública: CSS, JS...

Crear un proyecto con Symfony2 Punto de entrada al entorno de desarrollo Código HTML generado por la aplicación Barra de herramientas

Crear un proyecto con Symfony2

Crear un proyecto con Symfony2 /web/app_dev.php (Controlador frontal)

Crear un proyecto con Symfony2 /app/config/routing.yml (Configuración global de las URL) /src/hellobundle/resources/config/routing.yml (Configuración de las URL del bundle) Configuración en cascada

Crear un proyecto con Symfony2 /src/application/hellobundle/controller/hellocontroller.php (Configuración)

Plantillas PHP /src/application/hellobundle/resources/views/hello/index.php (Vista) /src/application/hellobundle/resources/views/hello/layout.php /app/views/hello/layout.php

Plantillas con Twig Las plantillas pueden estar escritas en PHP o Twig Twig: Template Engine - Más facil para los diseñadores Muy rápido (se compila a PHP) Conciso Completo twig-project.org

Plantillas con Twig /src/application/hellobundle/resources/views/hello/index.twig (Vista) /src/application/hellobundle/resources/views/hello/layout.twig /app/views/hello/layout.php

Acceso a base de datos BD = Estructura relacional ORM object-relational mapping Evita utilizar una sintaxis específica de un sistema de bases de datos concreto PHP5 y Symfony = Orientados a objetos

Acceso a base de datos ORMs:

Acceso a base de datos Configuración de la Base de Datos /app/config/config.yml Si la base de datos existe, podemos pedirle a Doctrine que mapee las tablas Comando doctrine:mapping:import Si la base de datos NO existe, podemos crear las clases nosotros mismos. Después, se creará la base de datos a partir de esas clases Comandos - doctrine:database:create - doctrine:schema:create

Acceso a base de datos Cómo crearíamos una actividad nueva en la BD?

Acceso a base de datos Y obtener todas las actividades de la BD? SELECT a.id, a.titulo, a.aforo FROM actividad a

Acceso a base de datos Y obtener todas las actividades de la BD? Plantilla:

Formularios Creamos un formulario para introducir una actividad /src/application/hellobundle/controller/hellocontroller.php

Formularios Creamos un formulario para introducir una actividad /src/application/hellobundle/resources/views/hello/nueva.php Y para recibir los datos del formulario?

Formularios Creamos un formulario para introducir una actividad /src/application/hellobundle/controller/hellocontroller.php

Formularios Algunos controles predefinidos en Symfony2 BÁSICOS TextField TextAreaField CheckboxField ChoiceField PasswordField HiddenField CON INTERNACIONALIZACIÓN NumberField IntegerField PercentField MoneyField DateField BirthdayField TimeField DateTimeField TimezoneField OTROS RepeatedField Raúl Fraile Beneyto FieldGroup CollectionField

Características interesantes de Symfony2

Bundles

Bundles Qué es un bundle? - Un bundle es un paquete con una estructura definida, que puede contener cualquier cosa (clases, controladores, css...). - Implementa una funcionalidad. - Todo en Symfony2 son bundles. - Sustituye a algunos conceptos de symfony 1 (plugins, librerías...) - Permite una gran flexibilidad

Bundles Symfony2 está formado por Bundles:

Bundles Aparte de los bundles oficiales, podemos añadir a nuestro proyecto Bundles creados por terceros: - FacebookBundle - TwitterBundle - SitemapBundle - HTMLPurifierBundle - La versión 4 de phpbb se está programando como bundle de Symfony2

Helpers

Helpers A diferencia de symfony 1.4, los helpers en Symfony2 son objetos. Nos ayudan a generar código HTML. P.ej. Generar la ruta de una imagen: <img src="<?php echo $view['assets']->geturl('images/logo.png')?>" /> Ventaja: si cambiamos el DocumentRoot, no haría falta cambiar NADA.

P.ej. Incluir CSS y JavaScripts Helpers <?php $view['javascripts']->add('js/actividades.js')?> <?php echo $view['javascripts']?> <?php $view['stylesheets']->add('css/estilos.css')?> <?php echo $view['stylesheets']?> Ventaja: Las vistas, al extenderse, se van acumulando los CSS y JS.

P.ej. Generar un enlace Helpers <a href="<?php echo $view['router']->generate('hello', array('name' => 'Raul'))?> "> Hola Raúl!</a> Generaría: <a href= /hello/raul > Hola Raúl!</a> Ventaja: Si las rutas cambian, simplemente haría falta cambiarlo en el routing.yml, y la aplicación seguiría funcionando.

Tests Unitarios PHPUnit

Tests Unitarios - PHPUNit Symfony2 utiliza PHPUnit 3.5 (o superior) como framework de pruebas Manual: http://www.phpunit.de/manual/3.5/en/

Tests Unitarios - PHPUNit assertarrayhaskey() assertclasshasattribute() assertclasshasstaticattribute() assertcontains() assertcontainsonly() assertempty() assertequalxmlstructure() assertequals() assertfalse() assertfileequals() assertfileexists() assertgreaterthan() assertgreaterthanorequal() assertinstanceof() assertinternaltype() assertlessthan() assertlessthanorequal() assertnull() assertobjecthasattribute() assertregexp() assertstringmatchesformat() assertstringmatchesformatfile() assertsame() assertselectcount() assertselectequals() assertselectregexp() assertstringendswith() assertstringequalsfile() assertstringstartswith() asserttag() assertthat() asserttrue() asserttype() assertxmlfileequalsxmlfile() assertxmlstringequalsxmlfile() assertxmlstringequalsxmlstring()

Tests Unitarios - PHPUNit

PHP 5.3.2

PHP 5.3.2 PHP 5.3 introdujo algunas mejoras que utiliza Symfony2 para permitir un desarrollo más rápido y con mejor rendimiento: - Mejora en un 20% el rendimiento. - Permite namespaces

Rápido

Symfony2 es: - 2x más rápido que symfony 1.4.2-3.5x más rápido que Zend 1.10-5.5x más rápido que CakePHP 1.2.6

Por qué es tan rápido? - Utiliza PHP 5.3.2 - Lazy-loading - Caché interna - Acelerador web

Cómo funciona el acelerador web?

Cómo funciona el acelerador web?

Cómo funciona el acelerador web?

Cómo funciona el acelerador web? Guarda páginas COMPLETAS Acelerador Aplicación Apache

60' 60' 1' 10' 60'

Solución? Cacheamos las páginas cada minuto? NO Solución: ESI (Edge Side Includes)

$this->render('hellobundle:hello:novedades.php'); $this->render('hellobundle:hello:novedades.php', array('standalone' => true)); <esi:include src=... />

Enlaces de interés

symfony-reloaded.org

symfony-project.org/blog

symfony.es

symfony2bundles.org

@fabpot

MUCHAS GRACIAS!!!! Twitter: @raulfraile Email: raulfraile@gmail.com