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. |