desarrollo de aplicaciones web con php y symfony

Download Desarrollo de aplicaciones web con PHP y symfony

If you can't read please download the document

Upload: juan-eladio-sanchez-rosas

Post on 16-Apr-2017

23.991 views

Category:

Technology


0 download

TRANSCRIPT

Desarrollo de aplicaciones web
con PHP y Symfony

Tercer encuentro de usuarios Linux en la Regin Lambayeque

Hablemos de
programacin y web

Hablemos de programacin ...

En que lenguajes usualmente programamos?Java

C#

C/C++

Visual Basic

Pero,
estamos en la tendencia correcta?

Tiobe Programming Community Index

http://www.tiobe.com/tpci.htm

PHP

Qu NO es PHP?

Pasta con Hipervnculos Programable(PHP)

Mala reputacin

Cdigo Spaghetti

Amateurs

Sintaxis inconsistente

Reinventar la ruedda

PHP: Hypertext Preprocessor

http://www.php.net/

Lenguaje de scripting de propsito general creado en 1994 por Rasmus Lerdorf.

Optimizado para desarrollo de sitios web dinmicos.

Sus sentencias pueden ser incluidas en medio de cdigo HTML.

Cmo funciona?

Un ejemplo: Formulario (pagina.htm)

...

Su nombre: Su edad:

...

Un ejemplo: Formulario (pagina.htm)

Su nombre:

Su edad:

Elisa Caldern21Enviar

Un ejemplo: La respuesta (accion.php)

Hola .
Tiene aos

Un ejemplo: La respuesta (accion.php)

HolaSu nombre es Elisa CaldernTiene 21 aosEst usando Internet Explorer

Por qu usar PHP?

Excelente desempeo en servidores web.

Integracin a distintas bases de datos.

Estabilidad y portabilidad entre distintas plataformas.

Usado en sitios de alto trfico (Facebook, Yahoo!, Wikipedia)

(si PHP llega a ser tu cuello de botella, felicitaciones, tienes una aplicacin con grado A y que es ms rpida que el 99% de los sitios web de Internet)

Aos de experiencia y herramientas

Por qu usar PHP?

Producto de cdigo abierto (open source).

Curva asequible de aprendizaje.

Hosting barato.

Cdigo abierto. Hay desarrolladores, libreras, soporte y documentacin

Fcil de aprender, fcil de usar

Es el lenguaje #1 de desarrollo para la web

Qu necesito para programar en PHP?

Qu necesito para programar?

Un ambiente de desarrollo

Recuerdas?

Qu necesito para programar?

Un navegador de Internet (o varios)

Una conexin a Internet?

Un servidor web con soporte de PHP

Una base de datos?

Navegadores de Internet

Internet Explorer7.0

8.0

Mozilla Firefox3.6

Apple Safari4.0

Google Chrome5.0

Servidores web con soporte de PHP

Apache Web Server

Internet Information Server (IIS)

OtrosNginx

Lighttpd

Boa

Cherokee

Pero instalar el servidor puede ser un problema ...

www.apachefriends.org/en/xampp.html

XAMPP

SOLO INTNTALO EN CASA!

Todo en uno: Apache, PHP,
MySQL y libreras tiles.

Para Windows, Linux,
Mac OS X y Solaris.

Tiempo de escribir cdigo ...

Donde?Bloc de notas?Mala idea!

Gedit / NotePad++Regular

Entornos integrados de desarrollo

PHP Development Tools (Eclipse PDT)

NetBeans for PHP

Aptana IDE

Quanta Plus

Bluefish

Comienza con PHP

Esto fue slo el comienzo :D

PHP es un lenguaje subestimado, pero con el cual se pueden construir sitios web de gran escala.

Existen multitud de herramientas:Frameworks MVC (CakePHP, Symfony, Zend)

Extensiones (PEAR, PECL)

Libreras (phpMailer, FreePDF, FeedCreator)

CMS (Wordpress, Joomla, Drupal)

Pero puedes comenzar por ...

Manual oficial de PHPwww.php.net/manual/es

Yahoo! Developer Networkdeveloper.yahoo.com/php

Manual de PHPwww.forosdelweb.com/wiki/Manual_de_PHP

Manual de PHP 5www.desarrolloweb.com/manuales/58/

Desarrollo de aplicaciones web con PHP y Symfony

Symfony framework

Completo entorno de desarrolloDiseado para optimizarConstruccin de aplicaciones web

Tecnologas que inspiraron Symfony

Por qu Symfony (para las personas)?

Para el dueo del producto:Fcil de mantener y soportar

Producto basado en buenas prcticas y patrones de diseo

Para el desarrollador/consultora:Desarrollos reusables

Fcil de integrar nuevos ingenieros al proyecto

Mejores prcticas: menos riesgoDesarrollo reusable: inteligencia de desarrollo

Activo desarrollo y soporte

Curva de aprendizaje pronunciada pero con buena documentacin

Gran comunidad de desarrolladores

Uno de los frameworks ms completos

Conceptos bsicos

Programacin orientada a objetos

PHP 5

Completa implementacin de POO.

Inclusin de nuevas funcionalidades.

Mejora en desempeo y seguridad.

Definicin de extensiones.

PHP 5.3.2 + Zend Engine 2.3.0

Mejoras en rendimiento

POO: Composicin de objetos, herencia, agregacin, contencin, encapsulamiento

PHP 5

Mtodos mgicos__construct();

__toString();

...

PEAR (PHP Extension and Application Repository)Instalar y actualizar scripts PHP en el servidor

Este tipo de mtodos permiten redefinir el comportamiento de las clases sin modificar el cdigo externo. Con estos mtodos es posible que la sintaxis de PHP sea ms concisa y ms fcil de extender. Adems, estos mtodos son fciles de reconocer ya que sus nombres siempre empiezan con 2 guiones bajos seguidos (__).

PEAR es un "framework y sistema de distribucin para componentes PHP reutilizables". PEAR permite descargar, instalar, actualizar y desinstalar scripts de PHP. Si se utiliza un paquete de PEAR, no es necesario decidir donde guardar los scripts, cmo hacer que se puedan utilizar o cmo extender la lnea de comandos (CLI).

YAML

Formato para describir datos

visitante: datos: nombre: Elisa Garca edad: 21 peticion: navegador: Mozilla Firefox 3.6.3 sistemaoperativo: Ubuntu 10.04 resolucion: 1024x768

Mapeo de objetos a bases de datos

Propel / Doctrine

Un ORM consiste en una serie de objetos que permiten acceder a los datos y que contienen en su interior cierta lgica de negocio.

Una de las ventajas de utilizar estas capas de abstraccin de objetos/relacional es que evita utilizar una sintaxis especfica de un sistema de bases de datos concreto. Esta capa transforma automticamente las llamadas a los objetos en consultas SQL optimizadas para el sistema gestor de bases de datos que se est utilizando en cada momento.

Desarrollo rpido de aplicaciones (RAD)

Desarrollo iterativo e incremental

Centrado en avances puntuales

Refactorizacin de cdigo

Disear pruebas antes de programar

Hoy en da, las empresas reaccionan ms rpidamente y los clientes cambian de opinin constantemente durante el desarrollo de los proyectos. De este modo, los equipos de desarrollo deben adaptarse a esas necesidades y tienen que poder cambiar la estructura de una aplicacin de forma rpida. Afortunadamente, el uso de lenguajes de script como Perl y PHP permiten seguir otras estrategias de programacin, como RAD (desarrollo rpido de aplicaciones) y el desarrollo gil de software.KISS: Hazlo sencillo, idiota! (Keep It Simple, Stupid)DRY: No te repitas (Don't Repeat Yourself).TDD: desarrollo basado en pruebas (test-driven development).

Cmo se organiza un proyecto en Symfony

Cmo est organizado Symfony

Parte terica
(ZzzZzzZzz ...)

El patrn Modelo Vista Controlador

Utilizado en aplicaciones que ofrecen secciones para la interaccin con usuario.

Se divide una aplicacin en tres tipos de componentes:procesamiento (modelo)

entrada (controlador)

salida (vista)

MVC para web / Model2

Una propuesta de organizacin en PHP

MVC en Symfony

MVC en Symfony

Controlador frontal

http://localhost/index.php/mimodulo/miAccion

nico punto de entrada a la aplicacin.

Carga la configuracin de entorno.

Determina la accin a ejecutarse.

1. Carga la clase de configuracin del proyecto y las libreras de Symfony.2. Crea la configuracin de la aplicacin y el contexto de Symfony. 3. Carga e inicializa las clases del ncleo del framework. 4. Carga la configuracin. 5. Decodifica la URL de la peticin para determinar la accin a ejecutar y los parmetros de la peticin. 6. Si la accin no existe, redireccionar a la accin del error 404. 7. Activa los filtros (por ejemplo, si la peticin necesita autenticacin). 8. Ejecuta los filtros, primera pasada. 9. Ejecuta la accin y produce la vista.10. Ejecuta los filtros, segunda pasada.11. Muestra la respuesta.

Controlador frontal (index.php)

.
Nmero de DNI

Plantillas (resultado)

Hola Elisa CaldernNmero de DNI: 43253425

Su nombre de usuario es
ecalderon

Lgica de la vista

Cuando se requiere incluir fragmentos de cdigo en varias pginasElementos parciales (partial)

Componentes (component)

Slots

Layout

Cdigo comn a todas las pginas

Plantillas (resultado)

Hola Elisa CaldernNmero de DNI: 43253425

Su nombre de usuario es
ecalderon

Acceso a los datos

Utiliza Doctrine o Propel

Creacin automtica de clases

Automatiza operaciones bsicasInsertar

Actualizar

Borrar

Leer registros

Acceso a los datos

public function executeIndex($peticion){ $nombre = $peticion->getParameter('nombre'); $dni=$peticion->getParameter('dni');

$c = new Criteria(); $c->add(UsuarioPeer::DNI, $dni); $this->visitante = UsuarioPeer::doSelectOne($c)

return sfView::SUCCESS;}

Abstraccin de base de datos

Basado en PHP Data Objects (PDO)

Utilizado para consultas especficas que puede procesar la base de datos

Abstraccin de base de datos

$conexion = Propel::getConnection(); $consulta = 'SELECT MAX(%s) AS max FROM %s'; $consulta = sprintf($consulta, UsuarioPeer::CREATED_AT, UsuarioPeer::TABLE_NAME); $sentencia = $conexion->prepare($consulta); $sentencia->execute(); $resultset = $sentencia->fetch(PDO::FETCH_OBJ); $max = $resultset->max;

Ms posibilidades

Generador de administracin (Mantenimientos)

Framework de formularios y validaciones

Herramientas de depuracin

Plugins

Comienza con Symfony

Comienza a usar Symfony

Web oficialwww.symfony-project.org

Comunidad EN ESPAOL!www.symfony.es

Documentacin EN ESPAOL!librosweb.es/symfony

www.symfony-project.org/jobeet/1_4/Doctrine/es/

Cheat sheets (Hojas resumen)www.symfony.es/documentacion/chuletas/

Desarrollo de aplicaciones web
con PHP y Symfony

Tercer encuentro de usuarios Linux en la Regin Lambayeque

Juan Eladio Snchez Rosasblogs.antartec.com/opensourceslideshare.net/juaneladio