Suelo hacer un mini recuento de todos los capítulos en las reseñas, pero quizás no en este caso. Aquí me limitaré a hacer un breve resumen de las 10 partes, combinando todos los capítulos de tal o cual parte en una sola descripción. Luego, al final, escribiré mi opinión sobre el libro e intentaré destacar sus pros y sus contras.
Fundamentos de Programación Web
En general, este libro no trata sólo de PHP, sino también de la web, de Internet. En principio, es casi imposible imaginar el lenguaje PHP sin Internet - digamos, como una aplicación de escritorio, una aplicación móvil o un controlador para un sistema operativo. Por eso los autores del libro empiezan desde lejos. Por ejemplo, cubre conceptos como TCP/IP, servidor, ISP, hosting, documento HTML, puerto, y mucho más. Se explican los métodos GET y POST, y hay una breve introducción a HTML (principalmente formularios), CGI, y el servidor web PHP incorporado.
Básicos de PHP
Esta sección consta de 8 capítulos y está dedicada íntegramente a los conceptos básicos del lenguaje. Aquellos que estén familiarizados con los lenguajes de programación a través de libros estarán más que familiarizados con lo que estamos hablando: variables, tipos de datos, operaciones, sentencias condicionales, bucles y similares. Entre las cosas que no resultan tan familiares aquí está quizás el procesamiento de datos enviados desde formularios, así como los generadores. Por cierto, las funciones también se explican aquí.
Funciones estándar de PHP
PHP tiene un enorme número de funciones incorporadas para trabajar con diferentes tipos de datos, cubriendo una amplia variedad de casos. Algunas de estas funciones, desafortunadamente, ya no son recomendadas para su uso ni siquiera por los desarrolladores del lenguaje. No obstante, si no quieres leer la documentación oficial (que sigo creyendo que es la fuente original y contiene una lista completa de funciones), puedes familiarizarte con la lista propuesta por los autores de este libro. Tanto más cuanto que aquí se recogen las funciones más populares y utilizadas con frecuencia. Están divididas en grupos, cada uno de los cuales constituye un capítulo independiente, por lo que me resultará más fácil enumerar los nombres de los capítulos:
- Funciones de cadena
- Trabajando con matrices
- Funciones matemáticas
- Trabajando con ficheros y directorios
- Derechos de acceso y atributos de ficheros
- Iniciando programas externos
- Trabajando con fecha y hora
- Básicos de expresiones regulares
Básicos de la Programación Orientada a Objetos
Aunque el texto tiene unas 100 páginas, no hay casi ninguna teoría larga y tediosa sobre programación orientada a objetos. El material asume que usted ya está algo familiarizado con el concepto. En este libro, como en muchos otros, se puede decir que es una inmersión suave en la POO, pero desde las primeras páginas encontrarás código PHP. Los temas tratados no difieren de los temas estándar de la programación orientada a objetos: creación de objetos, constructores, destructores. Por cierto, cuando se tratan los destructores, se tocan los temas de la recolección de basura y las referencias cíclicas.
Y luego están los modificadores de acceso (public, protected, private), las palabras clave this, self, la serialización de objetos y los métodos mágicos. Los autores también tratan los principales paradigmas de la programación orientada a objetos, como la herencia, el polimorfismo y la encapsulación. También se abordan los temas de las interfaces, los rasgos y los métodos abstractos y virtuales. Por cierto, ha habido muchas mejoras menores y azúcar sintáctico sobre POO en PHP en RFCs a lo largo de los años, pero la versión actual del libro ciertamente no lo tiene (quizás ediciones más recientes, si las hay, lo hayan añadido). En general, esta parte está bien trabajada - se tratan temas de namespace, autoloaders de clases. El último capítulo está dedicado a la gestión de errores.
Clases predefinidas en PHP
Si PHP tiene un montón de funciones incorporadas para trabajar con diferentes tipos de datos, entonces por supuesto muchas de ellas podrían combinarse en clases para facilitar su uso. Tal vez si los desarrolladores del lenguaje hubieran hecho esto desde el principio - por ejemplo, con funciones para trabajar con cadenas o matrices - habría sido aún más conveniente (Laravel, por ejemplo, tiene tales clases).
En el lenguaje nativo, sin embargo, conjuntos ligeramente diferentes de funciones se agrupan en clases. Estos incluyen, por ejemplo, el trabajo con la fecha y la hora, tipos de datos iterados, la reflexión (el trabajo con el código), archivos y directorios, etc.
Redes en PHP
Aquí volvemos al principio del libro y cubrimos el tema de las redes, pero con PHP. Cubrimos el establecimiento y recepción de cabeceras, el trabajo con cookies y sesiones, y el trabajo con URLs (de hecho, hablamos de las matrices globales de PHP y de algunas funciones estándar). Esta parte del libro también muestra ejemplos de trabajo con sockets y correo. Cada uno de estos temas se cubre con cierto detalle (excepto los sockets, quizás).
Extensiones PHP
Aquí hablamos de extensiones que podemos activar y desactivar en el fichero de configuración php.ini. Algunas de estas extensiones están integradas en el núcleo del lenguaje, mientras que otras son en realidad de terceros y requieren pasos adicionales para instalarlas y activarlas.
Esta parte del libro explica cómo instalar estas extensiones y cómo habilitarlas en diferentes sistemas operativos. Se explican brevemente algunas directivas php.ini y cómo cambiar el tamaño de la memoria permitida, por ejemplo.
Uno de los capítulos de esta sección está dedicado a la seguridad y al filtrado de los datos de entrada que deben ser aceptados y procesados - digamos, desde formularios de usuario o URLs. Los ejemplos utilizan expresiones regulares, por lo que es aconsejable tener una idea general de lo que son.
Siguen otros capítulos sobre MySQL, imágenes, redes y Memcached. Sobre bases de datos, una breve introducción a la teoría, desde columnas y filas hasta claves y tipos de datos. Se cubren ejemplos de trabajo con bases de datos a través de consultas SQL normales y de la extensión PDO (en realidad, no es sorprendente que se mencione PDO en el tema de las extensiones: para eso estaba el curso introductorio sobre fundamentos de bases de datos, en caso de que el lector no esté familiarizado con ellas).
En cuanto al trabajo con imágenes, aquí se cubre la extensión GD. Para el trabajo en red, se utilizó la extensión php-curl, y para Memcached, se utilizó la extensión php7-memcached.
Bibliotecas
Hay varios capítulos que cubren qué es Composer (y cómo instalarlo y trabajar con él), qué es Packagist y dónde encontrar bibliotecas de terceros. Al final del capítulo aprenderás a crear una biblioteca que pueda ser utilizada por otros. Los autores introducen al lector en el PSR para asegurar que el futuro componente cumple con una serie de requisitos y estándares comunes.
Técnicas de programación PHP
Una de las partes más ambiguas del libro, que consiste en pequeños capítulos que están diseñados para mostrar cómo trabajar con código utilizando ejemplos del mundo real. Estos ejemplos incluyen: trabajar con XML, trabajar con formularios (que ya se ha tratado muchas veces, sólo que aquí con la carga de archivos), configurar redirecciones, trabajar con HTML, y algunos otros temas no relacionados.
Despliegue
El despliegue no es una solución moderna de CI/CD. Más bien, se trata de instalar Git, conectarse a través de SSH, e instalar algunas de las otras herramientas que necesita para ponerse en marcha con PHP si va a escribir algo más que scripts. Esto incluye la instalación de una base de datos, un servidor web y una máquina virtual.
Cierre
Plusos
Un libro muy detallado que no resulta aburrido de leer y que va acompañado de un enorme número de ejemplos e inserciones de código. Hay descripciones extendidas para cada tema. Yo diría que este libro se puede poner con seguridad en el segundo lugar en términos de información útil - después de la documentación oficial. En lo que a mí respecta, este es el libro más detallado sobre PHP que he visto.
Minus
El libro no es sólo grande - es enorme. Mucha gente puede que nunca llegue a la línea de meta. Además, parte del material está desactualizado (esperemos que los autores se mantengan al día y publiquen versiones actualizadas del libro).