Se publicó en 2021 el último libro sobre desarrollo de aplicaciones web con PHP. En concreto el libro de la colección Manuales Imprescindibles se titula: Curso de PHP 8 y MySQL 8 y los autores son Luis Miguel Cabezas Granado y Francisco José González Lozano.
Dejo a continuación el índice para saber los contenidos del libro y tener una idea general de los temas relacionados con la última versión de PHP 8.
ÍndiceCómo usar este libro
Estructura de la guía
Uso de los ejemplos
1. Introducción a PHP 8 y MySQL 8
1.1. Introducción
1.2. Instalación de PHP 8 y MySQL 8
1.3. git
1.4. Docker
1.5. Dockerfile
1.6. docker-compose
1.7. Visual Studio Code
1.8. MySQL Workbench
1.9. Resumen
1.10. Recomendaciones
2. Variables, tipos y constantes
2.1. Introducción
2.2. Variables
2.3. Tipos
2.3.1. Enteros (integer)
2.3.2. Número de coma flotante (float)
2.3.3. Cadena de caracteres (string)
2.3.4. Valores binarios (boolean)
2.3.5. Arrays
2.3.6. Objeto
2.3.7. Callable
2.3.8. Iterable
2.3.9. Valores nulos (NULL)
2.3.10. Recurso
2.3.11. Void
2.3.12. Unión
2.3.13. Mixed
2.4. Variables de variables
2.5. Funciones de variables
2.5.1. isset() y unset()
2.5.2. is_integer(), is_double(), is_string(), is_array()
2.5.3. intval(), floatval(), strval()
2.5.4. Funciones matemáticas de precisión arbitraria
2.6. Constantes
2.6.1. defined()
2.6.2. Constantes predefinidas
2.7. Resumen
3. Operadores
3.1. Introducción
3.2. Operadores de asignación
3.3. Operadores unarios
3.4. Operadores aritméticos
3.5. Operadores de comparación
3.6. Operadores lógicos
3.7. Operador ternario
3.8. Operadores bit a bit
3.9. Operadores de asignación combinados
3.10. Operador de ejecución
3.11. Operador de coalescencia nulo
3.12. Operador nave espacial
3.13. Precedencia de operadores
3.14. Resumen
4. Estructuras de control
4.1. Introducción
4.2. Estructuras de elección
4.2.1. if-else
4.2.2. Operador ternario
4.2.3. elseif
4.2.4. switch
4.2.5. match
4.3. Bucles
4.3.1. while
4.3.2. do-while
4.3.3. for
4.3.4. foreach
4.4. break y continue
4.5. Finalizar la ejecución de un programa
4.6. Sintaxis alternativa
4.7. Resumen
5. Funciones
5.1. Funciones
5.1.1. Valores de las funciones
5.1.2. Función para obtener la fecha
5.1.3. Documentación sobre funciones
5.1.4. Definir funciones propias
5.1.5. Ámbito de las variables
5.1.6. Argumentos por defecto
5.1.7. Argumentos variables
5.1.8. Argumentos con tipo definido
5.1.9. Funciones con tipo definido
5.1.10. Funciones anónimas
5.1.11. Recursividad
5.1.12. Organizar el código
5.2. Llamadas por valor
5.3. Llamadas por referencia
5.3.1. Referencia a variables
5.3.2. Funciones variables
5.4. Resumen
5.5. Recomendaciones
6. Cadenas de caracteres y expresiones regulares
6.1. Introducción
6.2. Propiedades de las cadenas
6.2.1. Índices de string
6.2.2. Operadores
6.2.3. Sintaxis para múltiples líneas
6.3. Funciones de string
6.3.1. Tamaño de la cadena
6.3.2. Posición de los caracteres
6.3.3. Conocer si existe el string
6.3.4. Chequeo del principio y final de una cadena
6.3.5. Comparación
6.3.6. Búsqueda de caracteres
6.3.7. Selección de subcadenas
6.3.8. Funciones de limpieza de cadenas
6.3.9. Sustitución de cadenas
6.3.10. Funciones de mayúsculas y minúsculas
6.4. Expresiones regulares
6.4.1. Comprobar expresiones regulares
6.4.2. Modificadores
6.4.3. Patrones de reemplazo
6.5. Resumen
6.6. Recomendaciones
7. Conjunto de datos tipo array
7.1. Introducción
7.2. Creación de arrays
7.2.1. Asignación directa
7.2.2. array()
7.2.3. list()
7.2.4. Funciones que devuelven arrays
7.3. Arrays multidimensionales
7.4. Propiedades de los arrays
7.4.1. count()
7.4.2. in_array()
7.4.3. Borrar ocurrencias
7.4.4. Interactuar con arrays
7.4.5. Funciones para avanzar en un array
7.4.6. Funciones para retroceder en un array
7.4.7. Intercambio de valores
7.4.8. Inversión del contenido
7.4.9. Mezcla de valores
7.5. Pilas
7.6. Ordenación de valores
7.7. Resumen
8. Formularios
8.1. Introducción
8.2. GET y POST
8.2.1. Arrays
8.3. Subir ficheros
8.4. Validación y saneamiento
8.4.1. Filtros de saneamiento
8.4.2. Filtros de validación
8.5. Resumen
9. PHP orientado a objetos
9.1. Introducción
9.2. Definición de clase
9.3. Instancia de clase
9.3.1. Constructor
9.3.2. Herencia
9.3.3. Redefinición de métodos
9.3.4. Valores y alcance de las variables
9.3.5. Miembros públicos, privados y protegidos
9.3.6. Propiedades y métodos privados
9.3.7. Propiedades y métodos protegidos
9.3.8. Propiedades y métodos públicos
9.3.9. Interfaces
9.3.10. Clases abstractas
9.3.11. Final
9.3.12. Clases con métodos estáticos
9.3.13. Llamadas a funciones padre
9.3.14. Clases anónimas
9.3.15. Rasgos
9.3.16. Fluent Interface
9.4. Promoción de las propiedades del constructor
9.5. Argumentos con nombre
9.6. Espacios de nombre
9.6.1. Carga automática de clases
9.7. Atributos
9.8. Métodos mágicos
9.8.1. __toString()
9.8.2. __set()
9.8.3. __get()
9.9. Serialización
9.10. Resumen
9.11. Recomendaciones
10. Código limpio y principios SOLID
10.1. Introducción
10.2. Código limpio
10.2.1. El código malo hace demasiadas cosas, el código limpio es enfocado
10.2.2. El lenguaje con el que se escribe el código debería parecer que fue hecho para resolver el problema
10.2.3. El código no debe ser redundante
10.2.4. Debe ser placentero leer el código
10.2.5. Puede ser extendido fácilmente por otro desarrollador
10.2.6. Debe tener dependencias mínimas
10.2.7. Cuanto más pequeño, mejor
10.2.8. Debe tener pruebas unitarias y de aceptación
10.2.9. Debe ser expresivo
10.3. Principios SOLID
10.3.1. Principio de responsabilidad única (SRP)
10.3.2. Principio abierto/cerrado (OCP)
10.3.3. Principio de sustitución de Liskov (LSP)
10.3.4. Principio de segregación de interfaz (ISP)
10.3.5. Principio de inversión de dependencias (DIP)
10.4. Resumen
10.5. Recomendaciones
11. Patrones de diseño
11.1. Introducción
11.2. Patrones de creación
11.2.1. Patrón de creación Singleton
11.2.2. Patrón de creación Factory Method
11.2.3. Patrón de comportamiento Observer
11.2.4. Patrón estructural Decorator
11.3. Resumen
11.4. Recomendaciones
12. MySQL básico
12.1. ¿Qué es MySQL?
12.2. MySQL Workbench
12.3. Manejar esquemas
12.4. Tipos de datos
12.5. Tablas
12.5.1. Crear una tabla
12.5.2. Crear registros
12.5.3. Actualizar y eliminar registros
12.6. Relaciones
12.7. Conclusión
13. Índices y consultas
13.1. Índices
13.1.1. Crear un índice
13.1.2. Claves primarias
13.1.3. Índice FULLTEXT
13.2. Consultar una base de datos MySQL
13.2.1. SELECT
13.2.2. SELECT COUNT
13.2.3. SELECT DISTINCT
13.2.4. DELETE
13.2.5. WHERE
13.2.6. LIMIT
13.2.7. MATCH AGAINST
13.2.8. UPDATE
13.2.9. ORDER BY
13.2.10. GROUP BY
13.3. Cruzar tablas
13.3.1. NATURAL JOIN
13.3.2. JOIN ON
13.3.3. Usar AS
13.4. Operadores lógicos
13.5. Funciones MySQL
13.5.1. CONCAT
13.5.2. CONCAT_WS
13.5.3. LENGTH
13.5.4. LOWER y UPPER
13.5.5. REPLACE
13.5.6. TRIM
13.5.7. CURDATE
13.5.8. DATE_FORMAT
13.5.9. DAY, MONTH y YEAR
13.6. Resumen
14. Normalización y transacciones
14.1. Introducción
14.1.1. Claves primarias
14.2. Normalización
14.2.1. Primera forma normal
14.2.2. Segunda forma normal
14.2.3. Tercera forma normal
14.2.4. Cuándo no usar normalización
14.3. Relaciones
14.3.1. Uno-a-uno
14.3.2. Uno-a-muchos
14.3.3. Muchos-a-muchos
14.4. Transacciones
14.4.1. Motores de almacenamiento de transacciones
14.4.2. Usar BEGIN
14.4.3. Usar COMMIT
14.4.4. Usar ROLLBACK
14.5. Resumen
15. CRUD de PHP con MySQL
15.1. Introducción
15.2. Extensiones MySQL
15.3. Conexión a MySQL
15.4. Consultar datos
15.4.1. Acceso a todos los registros
15.4.2. Configuración
15.4.3. Routing
15.4.4. Diseño limpio
15.4.5. Mostrar el resultado de la consulta
15.5. Manipulación de datos
15.5.1. Insertar una fila
15.5.2. Modificar una fila
15.5.3. Borrar una fila
15.6. Contar filas
15.6.1. Usar PHP
15.6.2. Usar la extensión Mysqli
15.6.3. Último número insertado
15.7. Resumen
16. Testing
16.1. Introducción
16.2. Test unitarios
16.3. PHPUnit
16.3.1. Composer
16.3.2. Primeras pruebas
16.3.3. Patrón AAA
16.3.4. Fixtures
16.4. Dobles de prueba
16.5. Unit Test are FIRST
16.5.1. Fast (Rápido)
16.5.2. Isolated (Independiente)
16.5.3. Repeateable (Repetible)
16.5.4. Selfverifying (Autoverificable)
16.5.5. Timely (Oportuno)
16.6. TDD: Test-Driven Development (Desarrollo guiado por pruebas)
16.7. Cobertura
16.8. Resumen
17. React
17.1. Introducción
17.2. Primeros pasos
17.3. Componentes
17.3.1. Crear un nuevo componente
17.3.2. Propiedades de los componentes
17.4. Estado del componente
17.5. Efectos
17.5.1. Recorrer las noticias con map
17.5.2. Cargando…
17.6. Resumen
17.7. Recomendaciones
18. Laravel 8
18.1. Introducción
18.2. Primeros pasos con Laravel 8
18.2.1. Integración con React
18.2.2. Rutas
18.2.3. Controladores
18.3. Plantillas con Blade
18.3.1. Componentes iniciales
18.4. Creación del modelo
18.5. Creación de las rutas
18.6. CRUD con Laravel
18.6.1. CREATE. Creación de registros
18.6.2. Creación de registro en la API
18.6.3. LIST. Listado de los registros
18.6.4. DELETE. Borrar un usuario
18.6.5. Enlaces del menú
18.6.6. Mensajes de alerta
18.6.7. EDIT. Editar un usuario
18.7. Resumen
18.8. Recomendaciones
Índice alfabético
Toda la información en la web del libro.