Desarrollo de aplicaciones web con PHP y symfony
-
Upload
juan-eladio-sanchez-rosas -
Category
Technology
-
view
23.990 -
download
0
Transcript of Desarrollo de aplicaciones web con PHP y symfony
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