LinuxParty
¿Alguna vez te has preguntado cuántos ficheros se incluyen unos a otros en tu aplicación PHP? ¿Y cómo visualizar de forma clara esa red de dependencias? Hoy te traigo una receta rápida y efectiva para generar un grafo de dependencias a partir de los include
, require
y require_once
en cualquier proyecto PHP.
Visualizar gráficamente las dependencias de tu aplicación no solo es útil: puede ser revelador. Verás cómo archivos que no pensabas relacionados, realmente lo están. Y si estás refactorizando, este tipo de mapas puede ser una brújula muy valiosa.
Acompañamos este tutorial con un ejemplo visual generado a partir del Babelium Project, pero puedes adaptarlo fácilmente a tu propia aplicación.
🔧 Paso 1: Instalar la extensión "inclued"
Lo primero es que tendrás que instalar pear, que es el gestor de paquetes de PHP, (PEAR, que significa "PHP Extension and Application Repository", es un repositorio de componentes reutilizables para PHP. Actúa como un framework y un sistema de distribución para código PHP)
Tendrás que buscar en tus repositorios, a mi gusta hacerlo así (Para Debian / Ubuntu y similares) :
apt search pear | grep ^pear
Así busco con grep, que la salida, solo me mostrará lo que empiece ( ^ ) con pear
Pero en este caso, hay que buscar php y discriminar por pear.
apt search php | grep pear
Y en mi Fedora, igual.
yum search pear
# Discriminar igualmente.
yum search php | grep pear
Una vez encontrado el paquete instalas:
apt install pear # En Ubuntu / Debian
yum install php-pear # Fedora / RedHat / Centos, etc...
Primero necesitas instalar la extensión PEAR inclued
(sí, con “d” al final, un juego de palabras con include
):
sudo pear install inclued-beta
⚙️ Paso 2: Activar la extensión en php.ini
Edita tu archivo php.ini
y añade estas líneas:
extension=inclued.so [inclued] inclued.enabled = On
Luego reinicia Apache para que los cambios surtan efecto:
sudo /etc/init.d/apache2 restart
🧠 Paso 3: Capturar la información de los includes
Edita el archivo de entrada principal de tu aplicación (por ejemplo index.php
) y añade este fragmento al final:
$fp = fopen('/tmp/deps.ser', 'w'); if ($fp) { $clue = inclued_get_data(); if ($clue) { fwrite($fp, serialize($clue)); } fclose($fp); }
Este código genera un archivo /tmp/deps.ser
con información serializada sobre todos los archivos incluidos durante la ejecución. Es un análisis recursivo: captura toda la cadena de inclusiones de tu aplicación.
🖼️ Paso 4: Generar y visualizar el grafo
Necesitarás Graphviz
, una potente herramienta de generación de gráficos a partir de descripciones en texto (formato .dot
):
# Convertimos el archivo serializado a .dot php graphviz.php -i /tmp/deps.ser -o deps.dot # Generamos la imagen PNG a partir del .dot dot -Tpng -o deps.png deps.dot
Y listo. Obtendrás un grafo como este:
(Imagen de ejemplo: grafo generado con Graphviz)
Puedes hacer clic en la imagen para ampliarla y examinar mejor las conexiones.
💡 Consejos adicionales
- Si usas Nginx o PHP-FPM, recuerda reiniciar los servicios correspondientes.
- Puedes automatizar todo el proceso para generar gráficos periódicos en entornos CI/CD.
- Para proyectos grandes, usa opciones de filtrado en Graphviz (
dot
) para ocultar nodos poco relevantes y enfocar lo esencial.
¿Quieres más trucos como este? ¡Síguenos en LinuxParty.es para aprender a sacar el máximo partido a PHP, Linux y software libre!

-
Espacio
- NASA descubre un Gigantesco Agujero -VACIO- en el Universo.
- Los Próximos Cincuenta Años en el Espacio.
- El objeto que cayó en Perú no era un satélite espía de EEUU
- Astrónomos divisan una segunda Tierra en formación
- El mayor agujero negro observado junto a una estrella
- Crea tu propio Sputnik
- Un astrónomo presenta una nueva teoría sobre las eras glaciales en Marte
- Un gran trozo del Universo se ha perdido. . . .de nuevo
- ¿Tuvo nuestro sistema solar otro planeta?
- España, a punto de perder el sistema de satélites Galileo
- La NASA desvela los primeros detalles de la misión tripulada a Marte
- Una estrella se aleja de la Vía Láctea, adiós estrella, adiós...