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

Throws

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

See

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

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