If you install the module and execute it via CLI it will not produce any errors when not enabled. It took me quite a bit of time until I realised that by default the module is disabled, http://www.php.net/manual/en/inclued.configuration.php.
Este ejemplo muestra el proceso de implementar inclued en una apliación existente, viendo los resultados.
Ejemplo #1 Obtener la información dentro de la aplicación misma de PHP (función)
<?php
// Archivo donde almacenar la información de inclued
$fp = fopen('/tmp/wp.ser', 'w');
if ($fp) {
$clue = inclued_get_data();
if ($clue) {
fwrite($fp, serialize($clue));
}
fclose($fp);
}
?>
Ahora que existe alguna información es hora de hacer que tenga sentido en la forma de un gráfico. La extension inclued incluye un archivo PHP llamado gengraph.php que crea un archivo dot que requiere la biblioteca » graphviz. Sin embargo, en esta forma no se requiere.
Ejemplo #2 Ejemplo de uso de gengraph.php
Este ejemplo crea una imagen llamada inclued.png que muestra la información de inclued.
# Primero, creamos el archivo dot $ php gengraph.php -i /tmp/wp.ser -o wp.dot # Lo siguiente, creamos la imagen $ dot -Tpng -o inclued.png wp.dot
Ejemplo #3 Listar información mediante volcados (configuración)
Cuando se usa la directiva inclued.dumpdir, los archivos (incluidos rastros) son volcados con cada petición. Aquí hay una manera de listar esos archivos, y deserializarlos (unserialize()).
<?php
$ruta = ini_get('inclued.dumpdir');
if ($ruta && is_dir($ruta)) {
echo "Ruta: $ruta", PHP_EOL;
$inclues = new GlobIterator($ruta . DIRECTORY_SEPARATOR . 'inclued*');
if ($inclues->count() === 0) {
echo 'No hay rastros hoy', PHP_EOL;
exit;
}
foreach ($inclues as $inclue) {
echo 'Archivo inclued: ', $inclue->getFilename(), PHP_EOL;
$data = file_get_contents($inclue->getPathname());
if ($data) {
$inc = unserialize($data);
echo ' -- nombre de archivo: ', $inc['request']['SCRIPT_FILENAME'], PHP_EOL;
echo ' -- número de inclusiones: ', count($inc['includes']), PHP_EOL;
}
echo PHP_EOL;
}
} else {
echo 'Hoy estoy lleno de rastros.', PHP_EOL;
}
?>
El resultado del ejemplo sería algo similar a:
Ruta: /tmp/inclued Archivo inclued: inclued.56521.1 -- nombre de archivo: /Users/philip/test.php -- número de inclusiones: 1 Archivo inclued: inclued.56563.1 -- nombre de archivo: /tmp/none.php -- número de inclusiones: 0 Archivo inclued: inclued.56636.1 -- nombre de archivo: /tmp/three.php -- número de inclusiones: 3
If you install the module and execute it via CLI it will not produce any errors when not enabled. It took me quite a bit of time until I realised that by default the module is disabled, http://www.php.net/manual/en/inclued.configuration.php.
Note that inclued does not work correctly when xdebug is enabled (the includes array remains empty; consequently, graphing the classes works but graphing the files does not). Bug report: https://bugs.php.net/bug.php?id=59419
The new gengraph.php has « -t » parameter set to « includes » by default. Don't forget to specify it to « classes » for most of all projects.
Since PHP 5.3, namespace operators are stripped by Graphiz when the graph is generated. Add the following tips to escape namespace operators:
<?php
// Around line 254
else /* classes */
{
$filemap = array();
foreach($data["classes"] as $k => $v) {
$class = $v;
// Here is the tip to remove namespaces
$class['name'] = str_replace('\\', '\\\\', $class['name']);
$class['mangled_name'] = str_replace('\\', '\\\\', $class['mangled_name']);
// ...
?>
By the way, if you are looking for an easy way to use inclued, take a look at my library: http://www.eexit.net/projects/inclued.html