Curso de PHP 8 y MySQL 8
Autor/a : Luis Miguel Cabezas Granado, Francisco José González Lozano
PHP es uno de los lenguajes más utilizados en Internet y está presente en aplicaciones muy conocidas como WordPress, Joomla, Moodle o el propio Facebook.
Índice
Có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