Array PHP_CompatInfo::parseFile (
string $file
, array $options = array()
)
単一のファイルをパースして互換性情報を取得します。
$file
パースするファイルのパス。
$options
以下のオプションを指定する配列。
debug には、追加の出力を行うかどうかを boolean 値で指定します。
ignore_functions には、バージョンを算出する際に無視させたい関数の配列を指定します。
ignore_constants には、バージョンを算出する際に無視させたい定数の配列を指定します。
ignore_extensions には、バージョンを算出する際に無視させたい PHP 拡張モジュールの配列を指定します。
ignore_versions には、バージョンを算出する際に無視させたい PHP のバージョンの配列を指定します。
ignore_functions_match には、バージョンを算出する際に無視させたい関数名のパターンの配列を指定します。
ignore_extensions_match には、バージョンを算出する際に無視させたい拡張モジュール名のパターンの配列を指定します。
ignore_constants_match には、バージョンを算出する際に無視させたい定数名のパターンの配列を指定します。
例外はスローされません。
PHP_CompatInfo::parseData() も参照ください。
バージョン 0.7.0 (2004-03-09) 以降
This function can not be called statically.
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 の simple_load_file() 関数と定数 DATE_W3C をスコープから除外し、(その条件のもとで) PHP の必要最小バージョンが 4.3.10 であることを表します。
もちろん、このスクリプトを PHP 4.3.10 だけで実行できるわけではありません。定数 DATE_W3C が使えないからです。