この例では、inclued を既存のアプリケーションに組み込んで結果を見る方法を説明します。
例1 PHP アプリケーション自身 (関数) 内のデータの取得
<?php
// inclued の情報を保存するファイル
$fp = fopen('/tmp/wp.ser', 'w');
if ($fp) {
$clue = inclued_get_data();
if ($clue) {
fwrite($fp, serialize($clue));
}
fclose($fp);
}
?>
データが取得できたら、それを何らかの形式で図にしてみたいと思われることでしょう。 inclued 拡張モジュールには gengraph.php という PHP ファイルが組み込まれています。 このファイルは、» graphviz ライブラリで使える dot ファイルを作成します。 しかし、これは必須ではありません。
例2 gengraph.php の使用例
この例は、inclued のデータを示す画像 inclued.png を作成します。
# まず dot ファイルを作成します $ php graphviz.php -i /tmp/wp.ser -o wp.dot # そして画像を作成します $ dot -Tpng -o inclued.png wp.dot
例3 inclued のダンプデータの一覧
inclued.dumpdir を使うと、ファイル (include 情報) がリクエストのたびに出力されます。 それらの一覧を取得して unserialize() する例です。
<?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: 1 Inclued file: inclued.56563.1 -- filename: /tmp/none.php -- number of includes: 0 Inclued file: inclued.56636.1 -- filename: /tmp/three.php -- number of includes: 3