LinuxParty

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

¿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:

Ejemplo de grafo de dependencias PHP

(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!


No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías