PHP_CompatInfo::parseFile()

PHP_CompatInfo::parseFile() -- 単一のファイルをパースする

概要

require_once 'PHP/CompatInfo.php';

Array PHP_CompatInfo::parseFile (string $file [, array $options = array()])

説明

単一のファイルをパースして互換性情報を取得します。

パラメータ

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 には、バージョンを算出する際に無視させたい定数名のパターンの配列を指定します。

例外・エラー

例外はスローされません。

参照

PHP_CompatInfo::parseData() も参照ください。

利用可能なバージョン

バージョン 0.7.0 (2004-03-09) 以降

注意

この関数は、スタティックにコールする ことはできません。

返り値

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 が使えないからです。