©
本文档使用
php.cn手册 发布
This example demonstrates the process of implementing inclued into an existing application, and viewing the results.
Example #1 Getting the data within the PHP application itself (function)
<?php
// File to store the inclued information
$fp = fopen ( '/tmp/wp.ser' , 'w' );
if ( $fp ) {
$clue = inclued_get_data ();
if ( $clue ) {
fwrite ( $fp , serialize ( $clue ));
}
fclose ( $fp );
}
?>
Now that some data exists, it's time to make sense of it in the form of a graph. The inclued extension includes a PHP file named gengraph.php that creates a dot file that requires the » graphviz library. However, this form is not required.
Example #2 Example use of gengraph.php
This example creates an image named inclued.png that shows the inclued data.
# First, create the dot file $ php gengraph.php -i /tmp/wp.ser -o wp.dot# Next, create the image $ dot -Tpng -o inclued.png wp.dot
Example #3 Listing data via inclued dumps (configuration)
When using the inclued.dumpdir directive, files (include clues) are dumped with every request. Here's one way to list those files, and unserialize() them.
<?php
$path = ini_get ( 'inclued.dumpdir' );
if ( $path && is_dir ( $path )) {
echo "Path: $path " , PHP_EOL ;
$inclues = new GlobIterator ( $path . DIRECTORY_SEPARATOR . 'inclued*' );
if ( $inclues -> count () === 0 ) {
echo 'No clues today' , PHP_EOL ;
exit;
}
foreach ( $inclues as $inclue ) {
echo 'Inclued file: ' , $inclue -> getFilename (), PHP_EOL ;
$data = file_get_contents ( $inclue -> getPathname ());
if ( $data ) {
$inc = unserialize ( $data );
echo ' -- filename: ' , $inc [ 'request' ][ 'SCRIPT_FILENAME' ], PHP_EOL ;
echo ' -- number of includes: ' , count ( $inc [ 'includes' ]), PHP_EOL ;
}
echo PHP_EOL ;
}
} else {
echo 'I am totally clueless today.' , PHP_EOL ;
}
?>
以上例程的输出类似于:
PATH: /tmp/inclued Inclued file: inclued.56521.1 -- filename: /Users/philip/test.php -- number of includes: 1Inclued file: inclued.56563.1 -- filename: /tmp/none.php -- number of includes: 0Inclued file: inclued.56636.1 -- filename: /tmp/three.php -- number of includes: 3
[#1] g dot kuizinas at anuary dot com [2013-03-06 23:54:24]
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.
[#2] gtisza at gmail dot com [2012-08-03 15:07:24]
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
[#3] admin at eexit dot net [2010-08-05 08:14:34]
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
{
$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