Lirios N° 518, Urbanizacion San José el Agustino
+51 1 385-4376
Este libro explica de forma clara, didáctica y muy práctica cómo desarrollar aplicaciones web. Contiene multitud de ejemplos para descargar y poder practicar, además de actividades y ejercicios para afianzar todo lo aprendido. Se pone especial énfasis en el desarrollo de aplicaciones completas. A lo largo del libro, se desarrollan tres aplicaciones que incorporan los contenidos de los capítulos anteriores. Primero utilizando solo PHP, luego incorporando AJAX y finalmente con Symfony.
El libro, concebido especialmente como manual para el módulo Desarrollo web en entorno servidor, puede ser útil también para cualquier persona interesada en aprender PHP o Symfony.
PRESENTACIÓN .................................................................................................................. 11
1. INTRODUCCIÓN AL DESARROLLO DE APLICACIONES WEB ..................................... 13
Objetivos ................................................................................................................................ 13
Mapa conceptual ................................................................................................................... 14
Glosario .................................................................................................................................. 14
1.1. Modelos de programación en entornos cliente-servidor .......................................... 15
1.2. Generación dinámica de páginas web ........................................................................... 16
1.2.1. Lenguajes de programación en entornos servidor ..................................................... 17
1.2.2. Integración con los lenguajes de marcas ................................................................. 17
1.2.3. Servidores de aplicaciones ......................................................................................... 18
1.3. Instalación del entorno de trabajo .................................................................................. 18
1.3.1. Servidores web y de base de datos ............................................................................ 19
1.3.2. Ejemplos y bases de datos .......................................................................................... 20
1.3.3. Entorno de desarrollo ................................................................................................... 20
Resumen ................................................................................................................................ 21
Ejercicios propuestos.............................................................................................................. 21
Actividades de autoevaluación .............................................................................................. 22
2. INTRODUCCIÓN AL LENGUAJE PHP ............................................................................. 25
Objetivos ................................................................................................................................ 25
Mapa conceptual ................................................................................................................... 26
Glosario ................................................................................................................................ 26
2.1. PHP y HTML. Código incrustado ................................................................................... 26
2.2. Sintaxis de PHP ............................................................................................................ 28
2.3. Variables y tipos de dato ............................................................................................... 28
2.3.1. Declaración de variables ............................................................................................ 28
2.3.2. Asignación por copia y por referencia ........................................................................ 29
2.3.3. Variables no inicializadas ............................................................................................ 30
2.3.4. Constantes .................................................................................................................. 30
2.3.5. Tipos de datos escalares ............................................................................................ 31
2.3.6. Ámbito de las variables ............................................................................................... 33
2.3.7. Variables predefinidas ................................................................................................. 33
2.4. Comentarios ................................................................................................................... 34
2.5. Estructuras de control ..................................................................................................... 35
2.5.1. Estructuras condicionales ............................................................................................ 35
2.5.2. Estructuras de repetición .............................................................................................. 36
2.5.3. Otras estructuras de control ......................................................................................... 40
2.6. Operadores ...................................................................................................................... 42
2.7.Arrays................................................................................................................................. 44
2.8. Funciones y librerías ..................................................................................................... 48
2.8.1. Funciones predefinidas ............................................................................................. 48
2.8.2. Funciones definidas por el usuario ........................................................................... 50
2.8.3. Paso de argumentos por copia y por valor ............................................................... 51
2.8.4. Funciones como argumentos ................................................................................... 51
2.9. Excepciones y errores ................................................................................................ 52
2.9.1. Errores ................................................................................................................. 52
2.9.2. Excepciones ............................................................................................................. 54
2.9.3. Excepciones Error .................................................................................................... 55
2.10. Clases y objetos ........................................................................................................ 56
Resumen ............................................................................................................................ 58
Ejercicios propuestos........................................................................................................ 59
Actividades de autoevaluación ........................................................................................... 59
3. DESARROLLO DE APLICACIONES WEB CON PHP ................................................... 63
Objetivos ............................................................................................................................. 63
Mapa conceptual ................................................................................................................ 64
Glosario .............................................................................................................................. 64
3.1. Paso de parámetros .................................................................................................... 64
3.2. Formularios ................................................................................................................. 66
3.2.1. Formulario de login .................................................................................................. 67
3.2.2. Formulario y procesamiento en un solo fichero ....................................................... 68
3.2.3. Subida de ficheros ................................................................................................... 69
3.3. Cookies ....................................................................................................................... 71
3.4. Sesiones. Seguridad: usuarios y roles ....................................................................... 73
3.5. Envío de correo electrónico ......................................................................................... 76
3.6. Bases de datos relacionales ........................................................................................ 78
3.6.1. Conexión a la base de datos .................................................................................... 78
3.6.2. Recuperación y presentación de datos ..................................................................... 79
3.6.3. Inserción, borrado y actualización ............................................................................. 80
3.6.4. Transacciones ............................................................................................................ 81
3.7. Bases de datos no relacionales ..................................................................................... 82
3.7.1. Instalación y puesta marcha de MongoDB ................................................................. 82
3.7.2. Conexión desde PHP .................................................................................................. 84
3.8. Ficheros ......................................................................................................................... 86
3.8.1. Ficheros XML ............................................................................................................... 89
3.9. Pruebas .......................................................................................................................... 92
3.10. Depuración de errores ................................................................................................. 94
Resumen .............................................................................................................................. 95
Ejercicios propuestos............................................................................................................ 95
Actividades de autoevaluación ............................................................................................. 96
4. EJEMPLO DE APLICACIÓN COMPLETA EN PHP ......................................................... 99
Objetivos .............................................................................................................................. 99
Mapa conceptual ................................................................................................................. 100
Glosario ............................................................................................................................ 100
4.1. Definición del proyecto .............................................................................................. 100
4.2. Análisis de requisitos ................................................................................................. 102
4.2.1. Esquema entidad-relación ...................................................................................... 102
4.2.2. Limitaciones de la aplicación .................................................................................. 103
4.3. Diseño de la aplicación .............................................................................................. 103
4.3.1. Diseño lógico de la base de datos .......................................................................... 103
4.3.2. Diseño físico de la base de datos ........................................................................... 104
4.3.3. Diagrama de flujo de pantallas ................................................................................ 105
4.3.4. El carrito de la compra ............................................................................................. 106
4.3.5. Control de acceso .................................................................................................... 107
4.3.6. Ficheros de la aplicación .......................................................................................... 108
4.4. Implementación ............................................................................................................ 109
4.4.1. Login .......................................................................................................................... 109
4.4.2. Control de acceso ...................................................................................................... 110
4.4.3. La cabecera ............................................................................................................... 110
4.4.4. Lista de categorías ..................................................................................................... 111
4.4.5. Tabla de productos ..................................................................................................... 112
4.4.6. Añadir productos ........................................................................................................ 113
4.4.7. El carrito de la compra ............................................................................................... 114
4.4.8. Eliminar productos ..................................................................................................... 115
4.4.9. Procesamiento del pedido ......................................................................................... 116
4.4.10. La base de datos ..................................................................................................... 117
4.4.11. Envío de correos ...................................................................................................... 121
Resumen .............................................................................................................................. 122
Ejercicios propuestos............................................................................................................. 123
Actividades de autoevaluación .............................................................................................. 123
5. APLICACIONES WEB DINÁMICAS CON AJAX ............................................................... 125
Objetivos ................................................................................................................................ 125
Mapa conceptual .................................................................................................................... 126
Glosario .................................................................................................................................. 126
5.1. Separación de la lógica de negocio ............................................................................. 126
5.2. Tecnologías y librerías asociadas ..................................................................................... 127
5.3. Obtención remota de información ................................................................................. 128
5.3.1. Peticiones síncronas y asíncronas ................................................................................ 129
5.4. Respuesta del servidor ..................................................................................................... 131
5.5. Modificación de la estructura de la página web .............................................................. 132
5.6. Captura de eventos ........................................................................................................ 134
5.7. Aplicaciones de una sola página .................................................................................... 135
Resumen ............................................................................................................................... 135
Ejercicios propuestos.............................................................................................................. 135
Actividades de autoevaluación .............................................................................................. 136
6. APLICACIÓN DE PEDIDOS CON AJAX ........................................................................... 139
Objetivos ............................................................................................................................... 139
Mapa conceptual ................................................................................................................... 140
Glosario ................................................................................................................................. 140
6.1. Diseño de la aplicación ................................................................................................ 140
6.2. Estructura de la página web .......................................................................................... 141
6.3. Cambios en la estructura .............................................................................................. 142
6.4. En el servidor ................................................................................................................. 143
6.5. Implementación ............................................................................................................ 144
6.6. Lado del servidor ............................................................................................................ 145
6.6.1. Login ........................................................................................................................... 145
6.6.2. Control de acceso ....................................................................................................... 146
6.6.3. La cabecera ................................................................................................................ 146
6.6.4. Las categorías ............................................................................................................. 147
6.6.5. Los productos ............................................................................................................. 147
6.6.6. El carrito de la compra ..................................................................................... 147
6.6.7. Añadir y eliminar productos ........................................................................... 148
6.6.8. Cerrar la sesión ............................................................................................... 148
6.6.9. Procesar el pedido .......................................................................................... 149
6.6.10. Funciones auxiliares .................................................................................... 149
6.7. El lado del cliente .............................................................................................. 149
6.7.1. Login ............................................................................................................... 149
6.7.2. Las categorías ................................................................................................. 150
6.7.3. Los productos ................................................................................................... 151
6.7.4. El carrito ............................................................................................................ 153
6.7.5. Añadir y eliminar ............................................................................................... 154
6.7.6. Realizar el pedido ........................................................................................... 155
Resumen ................................................................................................................... 156
Ejercicios propuestos.................................................................................................. 156
Actividades de autoevaluación ................................................................................... 156
7. MAPEO OBJETO-RELACIONAL (ORM) ................................................................ 159
Objetivos ...................................................................................................................... 159
Mapa conceptual ........................................................................................................ 160
Glosario ...................................................................................................................... 160
7.1. Mapeo objeto-relacional ...................................................................................... 160
7.2. Doctrine ............................................................................................................... 161
7.2.1. Instalación y configuración ................................................................................ 161
7.2.2. Entidades .......................................................................................................... 162
7.2.3. Inserción y borrado ........................................................................................... 165
7.3. Asociaciones ........................................................................................................ 166
7.3.1. Asociaciones muchos a uno unidireccionales ................................................... 167
7.3.2. Asociaciones muchos a uno bidireccionales ..................................................... 169
7.4. Consultas básicas ................................................................................................. 170
7.5. DQL ....................................................................................................................... 171
7.6. Repositorios propios ............................................................................................ 173
Resumen ..................................................................................................................... 174
Ejercicios propuestos................................................................................................... 174
Actividades de autoevaluación ................................................................................... 175
8. DESARROLLO DE APLICACIONES EN SYMFONY ........................................... 177
Objetivos .................................................................................................................... 177
Mapa conceptual ....................................................................................................... 178
Glosario ..................................................................................................................... 178
8.1. El patrón MVC ................................................................................................... 178
8.2. Symfony ............................................................................................................. 179
8.2.1. Visión general .................................................................................................. 179
8.2.2. Instalación ........................................................................................................ 180
8.2.3. Estructura de directorios ................................................................................ 181
8.3. Controladores ................................................................................................... 182
8.4. Rutas ................................................................................................................ 182
8.4.1. Paso de parámetros ...................................................................................... 182
8.4.2. Valores por defecto ....................................................................................... 183
8.4.3. Redirección ................................................................................................... 184
8.4.4. Rutas a nivel de clase ................................................................................. 184
8.4.5. Rutas disponibles ......................................................................................... 185
8.5. Plantillas .......................................................................................................... 185
8.5.1. Introducción a Twig ....................................................................................... 185
8.5.2. Rutas en plantillas ......................................................................................... 188
8.5.3. Inclusión y herencia ...................................................................................... 188
8.6. Servicios .......................................................................................................... 189
8.7. Bases de datos ................................................................................................ 190
8.8. Formularios ..................................................................................................... 191
8.9. Envío de correo ............................................................................................... 192
8.10. Seguridad. Usuarios y roles .......................................................................... 193
8.10.1. Control de acceso ...................................................................................... 197
8.10.2. Abrir sesión ................................................................................................. 197
8.10.3. Cerrar sesión .............................................................................................. 199
Resumen ............................................................................................................... 199
Ejercicios propuestos............................................................................................ 200
Actividades de autoevaluación ............................................................................ 200
9. APLICACIÓN DE PEDIDOS EN SYMFONY ................................................... 203
Objetivos .............................................................................................................. 203
Mapa conceptual .................................................................................................. 204
Glosario ................................................................................................................ 204
9.1. Diseño de la aplicación .................................................................................. 204
9.1.1. Plantillas ..................................................................................................... 205
9.1.2. Entidades .................................................................................................... 205
9.1.3. Rutas de la aplicación ................................................................................ 206
9.2. Implementación ............................................................................................ 207
9.3. Plantillas ....................................................................................................... 208
9.3.1. Login .......................................................................................................... 208
9.3.2. Plantilla base .............................................................................................. 208
9.3.3. Cabecera .................................................................................................... 209
9.3.4. Lista de categorías ...................................................................................... 209
9.3.5. Tabla de productos ...................................................................................... 210
9.3.6. El carrito de la compra ................................................................................. 210
9.3.7. Confirmación del pedido .............................................................................. 211
9.3.8. Correo .......................................................................................................... 211
9.4. Entidades ........................................................................................................ 212
9.5. Controladores .................................................................................................. 217
9.5.1. Abrir sesión ................................................................................................... 217
9.5.2. Lista de categorías ....................................................................................... 217
9.5.3. Tabla de productos ...................................................................................... 218
9.5.4. Carrito .......................................................................................................... 218
9.5.5. Añadir y eliminar .......................................................................................... 219
9.5.6. Realizar pedido ............................................................................................ 220
9.6. Seguridad ....................................................................................................... 222
Resumen .............................................................................................................. 223
Ejercicios propuestos............................................................................................ 224
Actividades de autoevaluación ............................................................................. 224
10. SERVICIOS WEB Y APLICACIONES HÍBRIDAS .......................................... 227
Objetivos ............................................................................................................... 227
Mapa conceptual ................................................................................................... 228
Glosario ................................................................................................................. 228
10.1. Arquitecturas de programación orientadas a servicios .............................. 229
10.2. Protocolos y lenguajes implicados. SOAP ................................................... 229
10.2.1. SOAP ........................................................................................................ 230
10.2.2. Descripción de servicios web. WSDL ....................................................... 230
10.3. Librerías de PHP para servicios web ........................................................... 233
10.3.1. Generación de servicios web .................................................................... 233
10.3.2. Utilización de servicios web ...................................................................... 236
10.4. Aplicaciones híbridas .................................................................................. 237
10.4.1. Interfaces de programación y repositorios ............................................... 237
Ejercicios propuestos............................................................................................ 244
Resumen .............................................................................................................. 244
Actividades de autoevaluación ............................................................................. 245
WEBGRAFÍA ......................................................................................................... 247