• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Desarrollo de aplicaciones web con PHP y symfony
 

Desarrollo de aplicaciones web con PHP y symfony

on

  • 21,168 views

PHP es un lenguaje de scripting orientado al desarrollo de aplicaciones web. En una primera parte se explica los principios del lenguaje, algunas herramientas y un esbozo de una aplicación web ...

PHP es un lenguaje de scripting orientado al desarrollo de aplicaciones web. En una primera parte se explica los principios del lenguaje, algunas herramientas y un esbozo de una aplicación web escrita en PHP. En una segunda parte se presenta Symfony, un framework PHP que reúne las mejores prácticas de desarrollo de aplicaciones web.

Statistics

Views

Total Views
21,168
Views on SlideShare
21,118
Embed Views
50

Actions

Likes
10
Downloads
583
Comments
2

4 Embeds 50

http://www.slideshare.net 40
http://www.sfexception.com 7
https://abs.twimg.com 2
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Mala reputación Código Spaghetti Amateurs Sintaxis inconsistente Reinventar la ruedda
  • Usado en sitios de alto tráfico (Facebook, Yahoo!, Wikipedia) (si PHP llega a ser tu cuello de botella, felicitaciones, tienes una aplicación con grado A y que es más rápida que el 99% de los sitios web de Internet) Años de experiencia y herramientas
  • Código abierto. Hay desarrolladores, librerías, soporte y documentación Fácil de aprender, fácil de usar Es el lenguaje #1 de desarrollo para la web
  • Todo en uno: Apache, PHP, MySQL y librerías útiles. Para Windows, Linux, Mac OS X y Solaris.
  • Completo entorno de desarrollo Diseñado para optimizar Construcción de aplicaciones web
  • Mejores prácticas: menos riesgo Desarrollo reusable: inteligencia de desarrollo Activo desarrollo y soporte Curva de aprendizaje pronunciada pero con buena documentación Gran comunidad de desarrolladores Uno de los frameworks más completos
  • PHP 5.3.2 + Zend Engine 2.3.0 Mejoras en rendimiento POO: Composición de objetos, herencia, agregación, contención, encapsulamiento
  • Este tipo de métodos permiten redefinir el comportamiento de las clases sin modificar el código externo. Con estos métodos es posible que la sintaxis de PHP sea más concisa y más fácil de extender. Además, estos métodos son fáciles de reconocer ya que sus nombres siempre empiezan con 2 guiones bajos seguidos (__). PEAR es un "framework y sistema de distribución 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, cómo hacer que se puedan utilizar o cómo extender la línea de comandos (CLI).
  • Un ORM consiste en una serie de objetos que permiten acceder a los datos y que contienen en su interior cierta lógica de negocio. Una de las ventajas de utilizar estas capas de abstracción de objetos/relacional es que evita utilizar una sintaxis específica de un sistema de bases de datos concreto. Esta capa transforma automáticamente las llamadas a los objetos en consultas SQL optimizadas para el sistema gestor de bases de datos que se está utilizando en cada momento.
  • Hoy en día, las empresas reaccionan más rápidamente y los clientes cambian de opinión 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 aplicación de forma rápida. Afortunadamente, el uso de lenguajes de script como Perl y PHP permiten seguir otras estrategias de programación, como RAD (desarrollo rápido 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).
  • 1. Carga la clase de configuración del proyecto y las librerías de Symfony. 2. Crea la configuración de la aplicación y el contexto de Symfony. 3. Carga e inicializa las clases del núcleo del framework. 4. Carga la configuración. 5. Decodifica la URL de la petición para determinar la acción a ejecutar y los parámetros de la petición. 6. Si la acción no existe, redireccionará a la acción del error 404. 7. Activa los filtros (por ejemplo, si la petición necesita autenticación). 8. Ejecuta los filtros, primera pasada. 9. Ejecuta la acción y produce la vista. 10. Ejecuta los filtros, segunda pasada. 11. Muestra la respuesta.
  • 1. Carga la clase de configuración del proyecto y las librerías de Symfony. 2. Crea la configuración de la aplicación y el contexto de Symfony. 3. Carga e inicializa las clases del núcleo del framework. 4. Carga la configuración. 5. Decodifica la URL de la petición para determinar la acción a ejecutar y los parámetros de la petición. 6. Si la acción no existe, redireccionará a la acción del error 404. 7. Activa los filtros (por ejemplo, si la petición necesita autenticación). 8. Ejecuta los filtros, primera pasada. 9. Ejecuta la acción y produce la vista. 10. Ejecuta los filtros, segunda pasada. 11. Muestra la respuesta.

Desarrollo de aplicaciones web con PHP y symfony Desarrollo de aplicaciones web con PHP y symfony Presentation Transcript

  • Desarrollo de aplicaciones web con PHP y Symfony Tercer encuentro de usuarios Linux en la Región Lambayeque
  • Hablemos de programación y web
  • Hablemos de programación ...
    • 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 Hipervínculos Programable (PHP)
  • PHP: Hypertext Preprocessor http://www.php.net/
    • Lenguaje de scripting de propósito general creado en 1994 por Rasmus Lerdorf.
    • Optimizado para desarrollo de sitios web dinámicos.
    • Sus sentencias pueden ser incluidas en medio de código HTML.
  • ¿Cómo funciona?
  • Un ejemplo: Formulario (pagina.htm) ... <body> <form action=&quot;accion.php&quot; method=&quot;POST&quot;> Su nombre: <input type=&quot;text&quot; name=&quot;nombre&quot; /> Su edad: <input type=&quot;text&quot; name=&quot;edad&quot; /> <input type=&quot;submit&quot;> </form> </body> ...
  • Un ejemplo: Formulario (pagina.htm) Su nombre: Su edad:
  • Un ejemplo: La respuesta (accion.php) <body> <?php $lst_nombre=$_POST[&quot;nombre&quot;]; $lst_edad=$_POST[&quot;edad&quot;] if (trim($lst_nombre) && trim($lst_edad)) { ?> <p>Hola <?php $lst_nombre; ?> . <br />Tiene <?php $lst_edad; ?> años</p> <?php }?> <?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) { echo &quot;<p>Estás usando Internet Explorer</p>&quot; } else { echo &quot;<p>¡Eres bienvenido en este lugar!</p>&quot; } ?>
  • Un ejemplo: La respuesta (accion.php) Hola Su nombre es Elisa Calderón Tiene 21 años Está usando Internet Explorer
  • ¿Por qué usar PHP?
    • Excelente desempeño en servidores web.
    • Integración a distintas bases de datos.
    • Estabilidad y portabilidad entre distintas plataformas.
  • ¿Por qué usar PHP?
    • Producto de código abierto (open source).
    • Curva asequible de aprendizaje.
    • Hosting barato.
  • ¿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 conexión a Internet?
    • Un servidor web con soporte de PHP
    • ¿Una base de datos?
  • Navegadores de Internet
    • Internet Explorer
      • 7.0
      • 8.0
    • Mozilla Firefox
      • 3.6
    • Apple Safari
      • 4.0
    • Google Chrome
      • 5.0
  • Servidores web con soporte de PHP
    • Apache Web Server
    • Internet Information Server (IIS)
    • Otros
      • Nginx
      • Lighttpd
      • Boa
      • Cherokee
  • Pero instalar el servidor puede ser un problema ... www.apachefriends.org/en/xampp.html XAMPP ¡SOLO INTÉNTALO EN CASA!
  • Tiempo de escribir código ...
    • ¿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 sólo 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)
      • Librerías (phpMailer, FreePDF, FeedCreator)
      • CMS (Wordpress, Joomla, Drupal)
  • Pero puedes comenzar por ...
    • Manual oficial de PHP
      • www.php.net/manual/es
    • Yahoo! Developer Network
      • developer.yahoo.com/php
    • Manual de PHP
      • www.forosdelweb.com/wiki/Manual_de_PHP
    • Manual de PHP 5
      • www.desarrolloweb.com/manuales/58/
  • Desarrollo de aplicaciones web con PHP y Symfony
  • Symfony framework
  • Tecnologías que inspiraron Symfony
  • ¿Por qué Symfony (para las personas)?
    • Para el dueño del producto:
      • Fácil de mantener y soportar
      • Producto basado en buenas prácticas y patrones de diseño
    • Para el desarrollador/consultora:
      • Desarrollos reusables
      • Fácil de integrar nuevos ingenieros al proyecto
  • Conceptos básicos
  • Programación orientada a objetos
  • PHP 5
    • Completa implementación de POO.
    • Inclusión de nuevas funcionalidades.
    • Mejora en desempeño y seguridad.
    • Definición de extensiones.
  • PHP 5
    • Métodos mágicos
      • __construct();
      • __toString();
      • ...
    • PEAR (PHP Extension and Application Repository)
      • Instalar y actualizar scripts PHP en el servidor
  • YAML
    • Formato para describir datos
    visitante: datos: nombre: Elisa García edad: 21 peticion: navegador: Mozilla Firefox 3.6.3 sistemaoperativo: Ubuntu 10.04 resolucion: 1024x768
  • Mapeo de objetos a bases de datos Propel / Doctrine
  • Desarrollo rápido de aplicaciones (RAD)
    • Desarrollo iterativo e incremental
    • Centrado en avances puntuales
    • Refactorización de código
    • Diseñar pruebas antes de programar
  • Cómo se organiza un proyecto en Symfony
  • Cómo está organizado Symfony
  • Parte teórica (ZzzZzzZzz ...)
  • El patrón Modelo Vista Controlador
    • Utilizado en aplicaciones que ofrecen secciones para la interacción con usuario.
    • Se divide una aplicación en tres tipos de componentes:
      • procesamiento (modelo)
      • entrada (controlador)
      • salida (vista)
  • MVC para web / Model2
  • Una propuesta de organización en PHP
  • MVC en Symfony
  • MVC en Symfony
  • Controlador frontal http://localhost/ index.php /mimodulo/miAccion
    • Único punto de entrada a la aplicación.
    • Carga la configuración de entorno.
    • Determina la acción a ejecutarse.
  • Controlador frontal (index.php) <?php require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php'); $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false); sfContext::createInstance($configuration)->dispatch();
  • Acción
    • Contiene toda la lógica de la aplicación
    • Punto intermedio entre modelo y vista
  • Acción (un ejemplo) public function executeIndex($peticion) { if ($peticion->getMethod() == 'POST') { $nombre = $peticion->getParameter('nombre'); $dni=$peticion->getParameter('dni'); $this->visitante = new Usuario(); $this->respuesta = $this->getResponse(); } return sfView::SUCCESS; }
  • Plantillas
    • Permite definir el contenido de una página
    • Emplea código HTML y PHP
    • Cuenta con 'helpers' para escribir HTML
      • tag ('input', array('name' => 'parametro', 'type' => 'text'))
      • link_to ('Pínchame', 'mimodulo/miaccion')
      • image_tag ('miimagen', 'alt=imagen size=200x100')
      • javascript_include_tag ('miscript')
      • stylesheet_tag ('estilo')
  • Plantillas (ejemplo) <body> <p>Hola <?php $nombre; ?> . <br />Número de DNI <?php $dni; ?> </p> <p> <?php if ($visitante) { echo &quot;Tu nombre de usuario es &quot;; echo $visitante->GetUsername(); } else { echo &quot;No estás registrado en el sistema&quot; } ?>
  • Plantillas (resultado) Hola Elisa Calderón Número de DNI: 43253425 Su nombre de usuario es ecalderon
  • Lógica de la vista
    • Cuando se requiere incluir fragmentos de código en varias páginas
      • Elementos parciales (partial)
      • Componentes (component)
      • Slots
  • Layout
    • Código común a todas las páginas
  • Plantillas (resultado) Hola Elisa Calderón Número de DNI: 43253425 Su nombre de usuario es ecalderon
  • Acceso a los datos
    • Utiliza Doctrine o Propel
    • Creación automática de clases
    • Automatiza operaciones básicas
      • Insertar
      • 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; }
  • Abstracción de base de datos
    • Basado en PHP Data Objects (PDO)
    • Utilizado para consultas específicas que puede procesar la base de datos
  • Abstracción 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;
  • Más posibilidades
  • Generador de administración (“Mantenimientos”)
  • Framework de formularios y validaciones
  • Herramientas de depuración
  • Plugins
  • Comienza con Symfony
  • Comienza a usar Symfony
    • Web oficial
      • www.symfony-project.org
    • Comunidad ¡EN ESPAÑOL!
      • www.symfony.es
    • Documentación ¡EN ESPAÑOL!
      • 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 Región Lambayeque