Introducción
¿Qué es PHP?
¿Por qué PHP?
Nuevas características PHP 6
Para quién es este libro
Este libro no es el manual
Cómo está organizado el libro
Parte I: Presentar PHP
Parte II: Integración de base de datos MySQL
Parte III: Más PHP
Parte IV: Otras bases de datos
Parte V: Conexiones
Parte VI: Casos de estudio
Parte VII: Apéndices
Convenciones
Parte I. Presentar PHP
1. ¿Por qué PHP y MySQL?
¿Qué es PHP?
¿Qué es MySQL?
Decidir una plataforma de aplicación Web
Coste
Facilidad de uso
Incorporado en HTML
Compatibilidad multiplataforma
Estabilidad
Muchas extensiones
Desarrollo rápido de características
No propietario
Comunidad mundial de usuarios
Resumen
2. Programación del lado del servidor. Visión de conjunto
HTML estático
Tecnologías del lado del cliente
Programación del lado del servidor
¿Para qué es buena la programación del lado del servidor?
Resumen
3. Empezar a trabajar con PHP
Instalar PHP
Procedimientos de instalación
Instalar PHP en CentOS
Instalar PHP en Debian
Instalar PHP desde la fuente
Microsoft Windows y Apache
Otros servidores Web
Herramientas de desarrollo
¿Qué tiene que llegar?
Su HTML ya es compatible con PHP
Escapar de HTML
Etiquetas PHP canónicas
Hello World
Entrar y salir del modo PHP
Incluir archivos
Resumen
4. Aprender sintaxis y variables PHP
PHP es tolerante
HTML no es PHP
La sintaxis PHP es como la de C
PHP no es sensible al espacio en blanco
PHP es algunas veces sensible a mayúscula y minúscula
Las sentencias son expresiones terminadas por punto y coma
Las expresiones son combinaciones de tokens
Las expresiones se evalúan
Precedencia, asociatividad, y orden de evaluación
Expresiones y tipos
Expresiones de asignación
Razones para expresiones y sentencias
Las llaves crean bloques
Comentarios
Comentarios multilínea al estilo C
Comentarios de una línea: # y //
Variables
Las variables PHP son como las de Perl
Declarar variables (o no)
Asignar variables
Reasignar variables
Variables no asignadas
Valores predeterminados
Comprobar asignación con isset
Ámbito de variable
Funciones y ámbito de variable
Puede cambiar de modo si lo desea
Constantes
Tipos en PHP: No se preocupe, sea feliz
Sin declaraciones de tipo de variable
Conversión automática de tipo
Tipos asignados por contexto
Resumen de tipos
Los tipos sencillos
Enteros
Formatos de lectura
Rango
Reales
Formatos de lectura
Booleanos
Constantes booleanas
Interpretar otros tipos como booleanos
Ejemplos
NULL
Cadenas
Cadenas con comilla sencilla
Cadenas con comillas dobles
Comillas sencillas frente a dobles
Interpolación de variable
Nuevas líneas en cadenas
Límites
Salida
Echo y print
Echo
Print
Variables y cadenas
HTML y saltos de línea
Resumen
5. Aprender estructuras de control PHP y funciones
Expresiones booleanas
Constantes booleanas
Operadores lógicos
Precedencia de operadores lógicos
Operadores lógicos en cortocircuito
Operadores de comparación
Precedencia de operador
Comparación de cadena
El operador ternario
Ramificación
If-else
Anexo else
Elseif
Switch
Pasar en bucle
Bucles vinculados frente a bucles no vinculados
While
Do-while
For
Ejemplos de bucle
Un bucle for vinculado
Un bucle while no vinculado
Break y continue
Una nota sobre bucles infinitos
Alternar sintaxis de control
Terminar ejecución
Utilizar funciones
Valores de retorno frente a efectos secundarios
Documentación de función
Encabezados en documentación
Encontrar documentación de función
Definir sus propias funciones
¿Qué es una función?
Sintaxis de definición de función
Ejemplo de definición de función
Parámetros formales frente a parámetros reales
Desajuste de número de argumentos
Muy pocos argumentos
Demasiados argumentos
Funciones y ámbito de variable
Global frente a local
Variables estáticas
Excepciones
Ámbito de función
Include y require
Incluir solamente una vez
La ruta include
Recursión
Resumen
6. Pasar información con PHP
HTTP no tiene estado
Argumentos GET
Un mejor uso para las URL al estilo GET
Argumentos POST
Formatear variables de formulario
Consolidar formularios y manejadores de formulario
Tablas PHP superglobal
Resumen
7. Aprender gestión de cadenas PHP
Cadenas en PHP
Interpolación con llaves
Caracteres e índices de cadena
Operadores de cadena
Concatenación y asignación
La sintaxis heredoc
Funciones de cadena
Inspeccionar cadenas
Encontrar caracteres y subcadenas
Comparación y búsqueda
Buscar
Selección de subcadena
Funciones de limpieza de cadena
Sustitución de cadena
Funciones de mayúscula y minúscula
strtolower()
strtoupper()
ucfirst()
ucwords()
Escapar funciones
Imprimir y salida
Resumen
8. Aprender tablas
Los usos de tablas
¿Qué son tablas PHP?
Crear tablas
Asignación directa
La construcción array()
Especificar índices utilizando array()
Funciones que devuelven tablas
Recuperar valores
Recuperar por índice
La construcción list()
Tablas multidimensionales
Inspeccionar tablas
Eliminar de tablas
Iteración
Soporte para iteración
Utilizar funciones de iteración
Nuestro método de iteración favorito: foreach
Iterar con current() y next()
Empezar de nuevo con reset()
Orden inverso con end() y prev()
Extraer claves con key()
Valores vacíos y la función each()
Pasar con array_walk()
Resumen
9. Aprender gestión de números PHP
Tipos numéricos
Operadores matemáticos
Operadores aritméticos
Operadores aritméticos y tipos
Incrementar operadores
Operadores de asignación
Operadores de comparación
Precedencia y paréntesis
Funciones matemáticas sencillas
Aleatoriedad
Iniciar el generador
Ejemplo: Crear una selección aleatoria
Resumen
10. Problemas PHP
Problemas relacionados con la instalación
Síntoma: Texto del archivo mostrado en ventana del navegador
Síntoma: Los bloques PHP se muestran como texto bajo HTTP o el navegador le pide que guarde el archivo
Síntoma: Servidor o host no encontrado/página no se puede mostrar
Problemas de renderizado
Síntoma: Página totalmente en blanco
Síntoma: Código PHP se muestra en el navegador Web
No cargar páginas
Síntoma: No se puede encontrar página
Síntoma: No puede abrir un archivo para inclusión
Errores de análisis
Síntoma: Mensaje de error de análisis
Falta el punto y coma
No hay signos de dólar
Problemas de modo
Comillas sin escapar
Cadenas sin terminar
Otras causas de error de análisis
Includes que faltan
Síntoma: Aviso include
Variables no vinculadas
Síntoma: Variable no se muestra en la cadena de impresión
Síntoma: Variable numérica inesperadamente cero
Causas de variables no vinculadas
Problemas de mayúscula y minúscula
Problemas de ámbito
Problemas de función
Síntoma: Llamada a función no definida my_function()
Síntoma: Llamada a función () no definida
Síntoma: Llamada a función no definida array()
Síntoma: No puede volver a declarar my_function()
Síntoma: Número de parámetros erróneo
Problemas matemáticos
Síntoma: Aviso división entre cero
Síntoma: Resultado aritmético inesperado
Síntoma: NaN (o NAN)
Desconexión por tiempo
Resumen
Parte II. Integración de bases de datos MySQL
11. Introducción a base de datos y MySQL
¿Qué es una base de datos?
¿Por qué una base de datos?
Mantenibilidad y escalabilidad
Portabilidad
Evitar programación extraña
Búsqueda
Bases de datos soportadas por PHP
Nuestro foco: MySQL
Resumen
12. Instalar MySQL
Obtener MySQL
Instalar MySQL en Linux
Instalar MySQL Server en Debian y Ubuntu
Instalar MySQL en Microsoft Windows
Instalar MySQL en Windows
Resumen
13. Aprender SQL
Bases de datos relacionales y SQL
Estándares SQL
Los puntos fuertes de SQL
SELECT
Seleccionar ciertos registros
Uniones
Subselecciones
INSERT
UPDATE
DELETE
Diseño de base de datos
Privilegios y seguridad
Establecer permisos de base datos
Mantener las contraseñas de base de datos fuera del área Web
Aprender a crear copias de seguridad
Resumen
14. Aprender administración y diseño de bases de datos
Comandos básicos de cliente MySQL
Administración de usuario MySQL
Desarrollo local
Sitio Web independiente
Sitio Web de hospedaje compartido
Copias de seguridad
Replicación
Recuperación
myisamchk
mysqlcheck
Resumen
15. Integrar PHP y MySQL
Conectarse a MySQL
Crear consultas MySQL
Ir a buscar conjuntos de datos
Obtener datos sobre datos
Múltiples conexiones
Crear sobre comprobación de error
Crear bases de datos MySQL con PHP
Tipos de datos MySQL
Funciones MySQL
Resumen
16. Llevar a cabo consultas de bases de datos
Tablas HTML y tablas de bases de datos
Mapeado uno a uno
Ejemplo: Un visualizador de una sola tabla
Las tablas de ejemplo
Mejorar el visualizador
Mostrar encabezados de columna
Comprobación de error
Aspectos estéticos
Mostrar consultas arbitrarias
Mapeados complejos
Múltiples consultas frente a impresión compleja
Un ejemplo de consulta múltiple
Un ejemplo complejo de impresión
Crear las tablas de muestra
Resumen
17. Integrar formularios Web y bases de datos
Formularios HTML
Envío básico de formulario a una base de datos
Auto-envío
Editar datos con un formulario HTML
TEXT y TEXTAREA
CHECKBOX
RADIO
SELECT
Resumen
18. Mejorar eficiencia de bases de datos
Conexiones: Reducir, reutilizar, reciclar
Un mal ejemplo: Una conexión por sentencia
Múltiples resultados no necesitan múltiples conexiones
Conexiones persistentes
Indexar y diseño de tabla
Indexar
¿Qué es un índice?
Desventajas de indexar
Claves principales
Incluir todo, no dejarse nada
Otros tipos de índices
UNIQUE
Diseño de tabla
Hacer que la base de datos funcione para usted
Probablemente es más rápido que usted
Un mal ejemplo: Pasar en bucle, no restringido
Ordenar y agregar
Cuando sea posible, utilice MIN o MAX en lugar de ordenar
Crear campos de fecha y hora
Encontrar la última fila insertada
Resumen
19. Problemas MySQL
Sin conexión
Problemas con privilegios
Comillas sin escapar
Sentencias SQL rotas
Nombres mal escritos
Faltan comas
Argumentos de cadena sin comillas
Variables no vinculadas
Muy pocos datos, demasiados datos
Funciones específicas SQL
mysql_affected_rows() frente a mysql_num_rows()
mysql_result()
OCI_Fetch()
Depurar y comprobación de salud
Resumen
Parte III. Más PHP
20. Introducción a PHP orientado a objetos
¿Qué es programación orientada a objetos?
La idea sencilla
El enfoque procedural
El enfoque orientado a objetos
Elaboración: Objetos como tipos de datos
Elaboración: Herencia
Elaboración: Encapsulación
Elaboración: Constructores y destructores
Terminología
Constructores PHP básicos para POO
Definir clases
Acceder a variables de miembro
Crear instancias
Funciones de constructor
Herencia
Anular funciones
Subclases encadenadas
Modificar y asignar objetos
Problemas de ámbito
Características avanzadas POO
Miembros públicos, privados y protegidos
Miembros privados
Miembros protegidos
Interfaces
Constantes
Clases abstractas
Simular funciones de clase
Invocar funciones padre
Invocar constructores padre
Llamadas automáticas a constructores padre
Simular sobrecarga de método
Serialización
Dormir y despertarse
Problemas de serialización
Funciones de introspección
Visión de conjunto de funciones
Ejemplo: Genealogía de clase
Ejemplo: Hacer coincidir variables y columnas de base de datos
Ejemplo: Métodos de comprobación generalizados
Ejemplo ampliado: Formularios HTML
Problemas y resolución de problemas
Síntoma: Variable de miembro no tiene valor en función de miembro
Síntoma: Error de análisis, esperando T_VARIABLE
Estilo POO en PHP
Convenciones de nombrado
Funciones accesor
Diseñar para herencia
Resumen
21. Funciones avanzadas de tabla
Transformaciones de tablas
Recuperar claves y valores
Dar la vuelta, invertir y cambiar de sitio
Combinar, rellenar, cortar y unir
Pilas y colas
Traducir entre variables y tablas
Ordenar
Imprimir funciones para visualizar tablas
Resumen
22. Examinar expresiones regulares
Tokenizar y analizar funciones
¿Por qué expresiones regulares?
Expresiones regulares en PHP
Un ejemplo de expresión regular al estilo POSIX
Funciones de expresión regular
Expresiones regulares compatibles con Perl
Ejemplo: Un sencillo capturador de vínculos
La expresión regular
Utilizar la expresión en una función
Aplicar la