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

Desarrollo de aplicaciones web con PHP y symfony

Notas del editor

  • #7 Mala reputación Código Spaghetti Amateurs Sintaxis inconsistente Reinventar la ruedda
  • #14 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
  • #15 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
  • #21 Todo en uno: Apache, PHP, MySQL y librerías útiles. Para Windows, Linux, Mac OS X y Solaris.
  • #28 Completo entorno de desarrollo Diseñado para optimizar Construcción de aplicaciones web
  • #30 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
  • #33 PHP 5.3.2 + Zend Engine 2.3.0 Mejoras en rendimiento POO: Composición de objetos, herencia, agregación, contención, encapsulamiento
  • #34 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 &amp;quot;framework y sistema de distribución para componentes PHP reutilizables&amp;quot;. 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).
  • #36 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.
  • #37 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&apos;t Repeat Yourself). TDD: desarrollo basado en pruebas (test-driven development).
  • #46 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.
  • #47 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.