Javascript validator
Web page editor
Path of File to parse
An array of options where:
debug Contains a boolean to control whether extra ouput is shown.
ignore_functions Contains an array of functions to ignore when calculating the version needed.
ignore_constants Contains an array of constants to ignore when calculating the version needed.
ignore_extensions Contains an array of php extensions to ignore when calculating the version needed.
ignore_versions Contains an array of php versions to ignore when calculating the version needed.
ignore_functions_match Contains an array of function patterns to ignore when calculating the version needed.
ignore_extensions_match Contains an array of extension patterns to ignore when calculating the version needed.
ignore_constants_match Contains an array of constant patterns to ignore when calculating the version needed.
array - a hash which contains information keys: ignored_functions, ignored_extensions, ignored_constants, max_version, version, extensions, constants, tokens, cond_code
Suppose we have to parse source code like this one, named "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);
?> |
We get such result.
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 (
),
),
) |
| Warning |
Of course it is impossible to run such script with only PHP 4.3.10 because usage of DATE_W3C constant is not conditionned. |
Javascript validator
Web page editor