PHP_CompatInfo::parseFile
PHP_CompatInfo::parseFile() – 単一のファイルをパースする
Synopsis
require_once 'PHP/CompatInfo.php';
Array PHP_CompatInfo::parseFile (
string $file
, array $options = array()
)
Description
単一のファイルをパースして互換性情報を取得します。
Parameter
-
string
$file
-
パースするファイルのパス。
-
array
$options
-
以下のオプションを指定する配列。
-
debug
には、追加の出力を行うかどうかを boolean 値で指定します。
-
ignore_functions
には、バージョンを算出する際に無視させたい関数の配列を指定します。
-
ignore_constants
には、バージョンを算出する際に無視させたい定数の配列を指定します。
-
ignore_extensions
には、バージョンを算出する際に無視させたい PHP 拡張モジュールの配列を指定します。
-
ignore_versions
には、バージョンを算出する際に無視させたい PHP のバージョンの配列を指定します。
-
ignore_functions_match
には、バージョンを算出する際に無視させたい関数名のパターンの配列を指定します。
-
ignore_extensions_match
には、バージョンを算出する際に無視させたい拡張モジュール名のパターンの配列を指定します。
-
ignore_constants_match
には、バージョンを算出する際に無視させたい定数名のパターンの配列を指定します。
Since
バージョン 0.7.0 (2004-03-09) 以降
Note
This function can not be called
statically.
Return value
array - 以下のキーを含むハッシュを返します。
ignored_functions,
ignored_extensions,
ignored_constants,
max_version,
version,
extensions,
constants,
tokens,
cond_code
Example
このようなソースコード "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 が使えないからです。