パースするファイルのパス。
以下のオプションを指定する配列。
debug には、追加の出力を行うかどうかを boolean 値で指定します。
ignore_functions には、バージョンを算出する際に無視させたい関数の配列を指定します。
ignore_constants には、バージョンを算出する際に無視させたい定数の配列を指定します。
ignore_extensions には、バージョンを算出する際に無視させたい PHP 拡張モジュールの配列を指定します。
ignore_versions には、バージョンを算出する際に無視させたい PHP のバージョンの配列を指定します。
ignore_functions_match には、バージョンを算出する際に無視させたい関数名のパターンの配列を指定します。
ignore_extensions_match には、バージョンを算出する際に無視させたい拡張モジュール名のパターンの配列を指定します。
ignore_constants_match には、バージョンを算出する際に無視させたい定数名のパターンの配列を指定します。
array - 以下のキーを含むハッシュを返します。 ignored_functions, ignored_extensions, ignored_constants, max_version, version, extensions, constants, tokens, cond_code
このようなソースコード "conditional.php" をパースすることを考えましょう。
<?php // PHP 4.0.0 : __FILE__ // PHP 4.0.6 : DIRECTORY_SEPARATOR // PHP 4.0.7 : version compare // PHP 4.3.0 : ob_get_clean // PHP 4.3.0 : debug_backtrace // PHP 4.3.10 and 5.0.2 : PHP_EOL // PHP 5.0.0 : simplexml_load_file // PHP 5.1.1 : DATE_W3C if (!defined('DIRECTORY_SEPARATOR')) { define('DIRECTORY_SEPARATOR', strtoupper(substr(PHP_OS, 0, 3) == 'WIN') ? '\\' : '/' ); } if (function_exists('debug_backtrace')) { $backtrace = debug_backtrace(); } else { $backtrace = false; } if (function_exists('simplexml_load_file')) { $xml = simplexml_load_file('C:\php\pear\PHP_CompatInfo\scripts\version.xml'); } if (version_compare(phpversion(), '5.0.0', '<')) { include_once 'PHP/Compat.php'; PHP_Compat::loadFunction('ob_get_clean'); PHP_Compat::loadConstant('PHP_EOL'); } echo "Hello World" . PHP_EOL; $ds = DIRECTORY_SEPARATOR; $fn = dirname(__FILE__) . $ds . basename(__FILE__); echo "You have run file : $fn at " . date(DATE_W3C) . PHP_EOL; ?> |
<?php require_once 'PHP/CompatInfo.php'; $pci = new PHP_CompatInfo(); $input = 'conditional.php'; $options = array('ignore_functions' => array('simplexml_load_file'), 'ignore_constants' => array('DATE_W3C') ); $res = $pci->parseFile($input, $options); var_export($res); ?> |
結果はこのようになります。
array ( 'ignored_functions' => array ( 0 => 'simplexml_load_file', ), 'ignored_extensions' => array ( ), 'ignored_constants' => array ( 0 => 'DATE_W3C', ), 'max_version' => '', 'version' => '4.3.10', 'extensions' => array ( 0 => 'date', ), 'constants' => array ( 0 => 'PHP_EOL', 1 => 'DIRECTORY_SEPARATOR', 2 => '__FILE__', 3 => 'DATE_W3C', ), 'tokens' => array ( ), 'cond_code' => array ( 0 => 5, 1 => array ( ), ), ) |
警告 |
もちろん、このスクリプトを PHP 4.3.10 だけで実行できるわけではありません。定数 DATE_W3C が使えないからです。 |