Parte I. Comenzar a trabajar con PHP
1. Introducción a PHP
¿Qué es PHP?
¿Por qué usar PHP?
La evolución de PHP
¿Qué hay nuevo en PHP 5.3?
Espacios de nombre
El operador goto
Sintaxis nowdoc
Forma abreviada del operador ternario
Cambios avanzados
Resumen
2. Su primer script PHP
Instalar PHP
Instalación en Ubuntu Linux
Instalación en Windows
Instalación en Mac OS X
Comprobar su instalación
Comprobar el servidor Web
Comprobar PHP
Configurar su zona horaria
Otras formas de ejecutar PHP
Ejecutar PHP con otros servidores Web
Compilar usted mismo PHP
Ejecutar PHP de forma remota
Crear su primer script
Incorporar PHP en HTML
Mejorar más el script
Utilizar comentarios para que el código sea más legible
Resumen
Ejercicios
Parte II. Aprender el lenguaje
3. Fundamentos del lenguaje PHP
Utilizar variables en PHP
Nombrar variables
Crear variables
Comprender los tipos de datos
Acerca de tipología sencilla y permisiva
Comprobar el tipo de una variable
Cambiar el tipo de datos de una variable
Conversión de tipo
Operadores y expresiones
Tipos de operador
Operadores aritméticos
Operadores de asignación
Operadores de bits
Operadores de comparación
Operadores de incremento/decremento
Operadores lógicos
Operadores de cadena
Comprender la precedencia de operador
Constantes
Resumen
Ejercicios
4. Decisiones y bucles
Tomar decisiones
Decisiones sencillas con la sentencia if
Proporcionar una opción alternativa con la sentencia else
Comprobar una expresión muchas veces con la sentencia switch
Código compacto con el operador ternario
Realizar tareas repetitivas con bucles
Bucles sencillos con la sentencia while
Comprobar al final: el bucle do . . . while
Bucle impecables con la sentencia for
Salir de bucles con la sentencia break
Saltar iteraciones de bucle con la sentencia continue
Crear bucles anidados
Mezclar decisiones y bucles con HTML
Resumen
Ejercicios
5. Cadenas
Crear y acceder a cadenas
Incluir expresiones más complejas en cadenas
Utilizar sus propios delimitadores
Otras formas de crear cadenas
Averiguar la longitud de una cadena
Acceder a caracteres en una cadena
Buscar cadenas
Buscar cadenas con strstr()
Localizar texto con strops() y strrpos()
Encontrar el número de ocurrencias con substr_count()
Buscar un conjunto de caracteres con strpbrk()
Reemplazar texto en cadenas
Reemplazar todas las ocurrencias al utilizar str_replace()
Reemplazar una parte de una cadena con substr_replace()
Traducir caracteres con strstr()
Tratar con mayúsculas y minúsculas
Formatear cadenas
Formato de propósito general con printf() y sprintf()
Utilizar especificadores de tipo
Especificar signos
Rellenar el resultado
Especificar precisión de número
Intercambiar argumentos
Guardar el resultado en lugar de imprimirlo
Recortar cadenas con trim(), Itrim() y rtrim()
Rellenar cadenas con str_pad()
Agrupar líneas de texto con wordwrap()
Formatear números con number_format()
Resumen
Ejercicios
6. Tablas
La anatomía de una tabla
Crear tablas
Acceder a elementos de tabla
Cambiar elementos
Mostrar el resultado de una tabla entera con print_r()
Extraer un rango de elementos con array_slice()
Contar elementos en una tabla
Pasar por una tabla
Pasar en bucle por tablas con foreach
Utilizar foreach para pasar en bucle por los valores
Utilizar foreach para pasar en bucle por claves y valores
Alterar valores de tabla con foreach
Trabajar con tablas multidimensionales
Crear una tabla multidimensional
Acceder a elementos de tablas multidimensionales
Pasar en bucle por las tablas multidimensionales
Manipular tablas
Ordenar tablas
Ordenar tablas indexadas con sort() y rsort()
Ordenar tablas asociativas con assort() y arsort()
Ordenar claves de tabla asociativa con ksort() y krsort()
Ordenación múltiple con array_multisort()
Añadir y eliminar elementos de tabla
Añadir y eliminar elementos al principio y al final
Añadir y eliminar elementos a la mitad
Combinar tablas
Convertir entre tablas y cadenas
Convertir una tabla en una lista de variables
Resumen
Ejercicios
7. Funciones
¿Qué es una función?
¿Por qué son útiles las funciones?
Invocar funciones
Trabajar con funciones de variable
Escribir sus propias funciones
Definir parámetros
Parámetros opcionales y valores predeterminados
Devolver valores de sus funciones
Comprender el ámbito de las variables
Trabajar con variables globales
Utilizar variables estáticas para preservar valores
Crear funciones anónimas
Trabajar con referencias
Pasar referencias a sus propias funciones
Devolver referencias desde sus propias funciones
Escribir funciones recursivas
Resumen
Ejercicios
8. Objetos
¿Qué es programación orientada a objetos?
Ventajas de OOP
Comprender conceptos básicos OOP
Clases
Objetos
Propiedades
Métodos
Crear clases y objetos en PHP
Crear y utilizar propiedades
Comprender la visibilidad de propiedades
Declarar propiedades
Acceder a las propiedades
Propiedades estáticas
Constantes de clase
Trabajar con métodos
Visibilidad de método
Crear un método
Invocar métodos
Añadir parámetros y valores de retorno
Acceder a propiedades de objeto desde métodos
Métodos estáticos
Utilizar indicaciones para comprobar argumentos de método
Hacer que sus clases sean independientes con encapsulación
Sobrecargar objetos con __get(),__set() y __call()
Sobrecargar accesos de propiedad con __get() y __set()
Sobrecargar llamadas de método con __call()
Otros métodos de sobrecarga
Utilizar herencia para ampliar el potencial de los objetos
Anular métodos en la clase padre
Preservar la funcionalidad de la clase padre
Bloquear herencia y anular con clases y métodos finales
Utilizar clases y métodos abstractos
Trabajar con interfaces
Constructores y destructores
Establecer nuevos objetos con constructores
Ordenar objetos con destructores
Cargar automáticamente archivos de clase
Almacenar objetos como cadenas
Determinar la clase de un objeto
Resumen
Ejercicios
Parte III. Utilizar PHP en la práctica
9. Gestionar formularios HTML con PHP
Cómo funcionan los formularios HTML
Capturar datos de formulario con PHP
Tratar de un modo seguro con datos de formulario
Gestionar campos de formulario vacíos
Tratar con campos de múltiples valores
Generar formularios Web con PHP
Almacenar variables PHP en formularios
Crear formularios para subir archivos al servidor
Acceder a información en archivos subidos
Limitar el tamaño de los archivos subidos al servidor
Almacenar y utilizar un archivo subido al servidor
Redirigir después de un envío de formulario
Resumen
Ejercicios
10. Preservar el estado con cadenas de consulta,cookies y sesiones
Guardar estado con cadenas de consulta
Crear cadenas de consulta
Acceder a datos en cadenas de consulta
Trabajar con cookies
Componentes de cookie
Establecer una cookie en PHP
Acceder a cookies en sus scripts
Eliminar cookies
Utilizar sesiones PHP para almacenar datos
Crear una sesión
Leer y escribir datos de sesión
Destruir una sesión
Pasar los ID de sesión en cadenas de consulta
Cambiar el comportamiento de sesión
Resumen
Ejercicios
11. Trabajar con archivos y directorios
Comprender los archivos y directorios
Conseguir información de archivos
Propiedades relacionadas con tiempo
Recuperar un nombre de archivo de una ruta de acceso
Abrir y cerrar archivos
Abrir un archivo con fopen()
Cerrar un archivo con fclose()
Leer y escribir en archivos
Leer y escribir cadenas de caracteres
Comprobar el final de un archivo
Leer una línea a la vez
Leer archivos csv
Leer y escribir archivos completos
Acceso aleatorio a datos de archivo
Trabajar con permisos de archivo
Cambiar permisos
Comprobar permisos de archivo
Copiar, renombrar y eliminar archivos
Trabajar con directorios
Otras funciones de directorio
Volver a establecer el puntero de directorio
Cambiar el directorio actual
Crear directorios
Eliminar directorios
Obtener la ruta de directorio
Trabajar con objetos de directorio
Saber si es un archivo o un directorio
Crear un editor de texto
El script del editor de texto
Probar el editor
Examinar el código del editor
La lógica principal
La función displayFileList()
La función displayEditForm()
La función saveFile()
La función createFile()
La función displayPageHeader()
Resumen
Ejercicios
12. Introducción a las bases de datos y SQL
Decidir cómo almacenar datos
Arquitecturas de base de datos
Bases de datos incorporadas
Bases de datos cliente-servidor
Modelos de base de datos
Bases de datos sencillas
Bases de datos relacionales
Elegir una base de datos
Comprender las bases de datos relacionales
Normalización
Hablar con las bases de datos con SQL
Tipos de datos MySQL
Utilizar índices y claves
Presentar sentencias SQL
Configurar MySQL
Iniciar el servidor MySQL
Configurar la contraseña raíz MySQL
Empezar a trabajar con MySQL
Crear una nueva base de datos
Crear una tabla
Añadir datos a una tabla
Leer datos de una tabla
Actualizar datos en una tabla
Eliminar datos de una tabla
Eliminar tablas y bases de datos
Conectarse a MySQL desde PHP
Crear una conexión
Gestionar errores
Leer datos
Resumen
Ejercicios
13. Recuperar datos de MySQL con PHP
Configurar la base de datos del club del libro
El atributo y las colaciones BINARY
La restricción UNIQUE
El tipo de datos ENUM
El tipo de datos TIMESTAMP
Recuperar datos con SELECT
Limitar el número de filas devueltas
Ordenar resultados
Utilizar coincidencia de patrón para consultas flexibles
Resumir datos
Eliminar resultados duplicados
Agrupar resultados
Extraer datos de múltiples tablas
Utilizar alias
Otros operadores y funciones útiles MySQL
Crear un visualizador de registros de miembros
Crear el archivo config.php
Crear el archivo common.inc.php
Crear el archivo de clase DataObject
Crear la clase Member
Crear la clase LogEntry
Crear el script view_members.php
Crear el script view_member.php
Probar la aplicación
Resumen
Ejercicios
14. Manipular datos MySQL con PHP
Insertar registros
Actualizar registros
Eliminar registros
Crear una aplicación de registro de miembros
Añadir código más común
Mejorar la clase Member
Crear el script de registro
Probar la aplicación
Crear un área de miembros
Añadir un método de autenticación a la clase Member
Mejorar la clase LogEntry para registrar visitas de página
Añadir más código común
Escribir el script de página de conexión
Crear una función de desconexión
Crear las páginas para el área de miembros
Probar el área de miembros
Crear una aplicación de administración de miembros
Añadir métodos Update y Delete a la clase Member
Añadir un método de eliminación a la clase LogEntry
Modificar el script view_members.php
Crear el script view_member.php
Comprobar el gestor de miembros
Resumen
Ejercicios
15. Hacer su trabajo más sencillo con PEAR
Instalar paquetes PEAR
Probar el administrador de paquetes PEAR en Ubuntu
Probar PEAR al utilizar Mac OS X y MAMP
Instalar y probar PEAR con WampServer en Windows
Instalar un paquete
Instalar dependencias
Desinstalar paquetes
Utilizar un paquete PEAR
Crear tablas HTML con el paquete HTML_Table
Formularios Web, la forma sencilla con HTML_QuickForm
Instalar HTML_QuickForm
Trabajar con HTML_QuickForm
Utilizar reglas de validación
Resumen
Ejercicios
16. PHP y el mundo exterior
Trabajar con fechas y horas
Comprender las marcas de tiempo
Obtener la fecha y hora actual
Crear sus propias marcas de tiempo
Crear marcas de tiempo a partir de valores de fecha y hora
Crear marcas de tiempo a partir de valores de fecha y hora GMT
Crear marcas de tiempo a partir de cadenas de fecha y hora
Extraer valores de fecha y hora a partir de una marca de tiempo
Formatear cadenas de fecha
Comprobar valores de fecha
Trabajar con microsegundos
DateTime: el futuro de la gestión de fecha/hora en PHP
Trabajar con HTTP
Comprender las peticiones HTTP
Explorar las respuestas HTTP
Modificar una respuesta HTTP
Obtener información del servidor Web
Enviar correo electrónico
Especificar la dirección del emisor y añadir cabeceras
Controlar la dirección de correo electrónico Return-Path
Enviar correos electrónicos HTML
Resumen
Ejercicios
17. Generar imágenes con PHP
Fundamentos de gráficos por ordenador
Teoría del color
Sistemas de coordenadas
Tipos de imagen
Crear imágenes
Crear una imagen nueva
Asignar colores
Mostrar imágenes
Dibujar una imagen
Dibujar píxeles individuales
Dibujar líneas
Dibujar rectángulos
Dibujar círculos y elipses
Dibujar un arco
Dibujar polígonos
Manipular imágenes
Abrir una imagen existente
Aplicar una marca de agua
Copiar la marca de agua en la imagen
Trabajar con transparencia
Trabajar con opacidad
Crear imágenes en miniatura
Utilizar texto en imágenes
Añadir texto estándar
Utilizar fuentes TrueType
Resumen
Ejercicios
18. Coincidencia de cadenas con expresiones regulares
¿Qué es una expresión regular?
Coincidencia de patrón en PHP
Explorar la sintaxis de la expresión regular
Hacer coincidir caracteres literales
Hacer coincidir tipos de caracteres al utilizar clases de carácter
Hacer coincidir múltiples caracteres
Coincidencia más y menos larga posible
Utilizar subpatrones para agrupar patrones
Hacer referencia a coincidencias de subpatrón previas
Hacer coincidir patrones alternativos
Utilizar anclas para hacer coincidir en posiciones específicas
Encontrar múltiples coincidencias con preg_match_all()
Buscar tablas con preg_grep()
Reemplazar texto
Reemplazar texto con preg_replace()
Reemplazar texto al utilizar una función de rellamada
Alternar comportamiento coincidente con modificadores de patrón
Dividir una cadena con una expresión regular
Resumen
Ejercicios
19. Trabajar con XML
¿Qué es XML?
Estructura de documento XML
Partes importantes de un documento XML
Reglas de sintaxis XML
Utilizar elementos y atributos XML
Documentos XML válidos: DTD y XSD
XHTML: Un ejemplo de DTD en acción
Las DTD para XHTML
Hacer referencia a las DTD
Especificar espacios de nombre
Crear un documento XHTML
Leer documentos XML con PHP
Cómo funciona XML Parser
Crear un nuevo analizador
Crear manejadores de evento
Analizar el documento XML
Tratar con errores de análisis
Escribir y manipular documentos XML con PHP
Fundamentos de DOM
Crear un documento XML al utilizar el DOM
Manipular documentos XML al utilizar el DOM
Añadir elementos a un documento existente
Eliminar elementos de un documento
Cambiar nodos y atributos
Mover elementos
Hacer XML de forma sencilla con SimpleXML
Leer un documento XML
Crear un documento XML
Convertir entre SimpleXML y objetos DOM
Trabajar con XSL y XSLT
Resumen
Ejercicios
20. Escribir código de alta calidad
Escribir código modular
Incluir archivos
Incluir un archivo sólo una vez
Trabajar con rutas include
Includes dinámicos
Utilizar espacios de nombre para evitar choques
Utilizar estándares de codificación por consistencia
Documentar su código
Escribir buenos comentarios
Utilizar phpDocumentor para generar documentación externa
Comprobar entrada y codificar salida
Comprobar entrada
Codificar salida
Gestionar errores
Comprender niveles de error
Activar errores
Controlar dónde se envían los mensajes de error
Registrar en log sus propios mensajes de error
Permitir que su script gestione errores
Mejorar el informe de error
Utilizar objetos de excepción para gestionar errores
Lanzar excepciones
Capturar excepciones
Crear sus propias clases de excepción
Separar lógica de aplicación de lógica de presentación
Comprobación de código automática con PHPUnit
Resumen
Ejercicios
Parte IV. Apén A. Solucion B. Configurar PHP
Sobre php.ini
Las opciones php.ini
Las opciones del lenguaje
Miscelánea
Límites de recurso
Gestión de error y registro en log
Gestión de datos
Rutas y directorios
Subir archivos
Envoltorios Fopen
Extensiones dinámicas
&n C. Alternativas a MySQL
SQLite
PostgreSQL
Bases de datos del estilo dbm
Oracle
ODBC
&n D. Utilizar PHP desde la línea de comando
Ejecutar scripts PHP de línea de comando
Pasar argumentos a scripts de línea de comando
Crear scripts interactivos
Programar scripts PHP de línea de comando
Opciones útiles de línea de comando
Conclusión alfabético