array PHP_CompatInfo::parseDir (
string $dir
, array $options
= array()
)
Parse a directory recursively for its compatibility info
$dir
Path of folder to parse
$options
An array of options where:
file_ext Contains an array of file extensions to parse for PHP code. Default: php, php4, inc, phtml
recurse_dir Boolean on whether to recursively find files
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_files Contains an array of files to ignore. File names are case insensitive.
ignore_dirs Contains an array of directories to ignore. Directory names are case insensitive.
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.
throws no exceptions thrown
since version 0.8.0 (2004-04-22)
This function can not be called statically.
array - a hash which contains information keys:
ignored_functions,
ignored_extensions,
ignored_constants,
max_version,
version,
extensions,
constants,
tokens,
cond_code
Suppose we have these dirs/files to parse :
PHP_CompatInfo/tests/parseDir/ PHP5/tokens.php5 PHP5/upload_error.php extensions.php phpinfo.php
See package distribution to know in details content of this scripts.
<?php
require_once 'PHP/CompatInfo.php';
$pci = new PHP_CompatInfo();
$input = 'PHP_CompatInfo/tests/parseDir/';
$options = array('recurse_dir' => true,
'file_ext' => array('php', 'php5')
);
$res = $pci->parseDir($input, $options);
#var_export($res); // no need since PCI 1.8.0
?>
We get such result.
array (
'ignored_files' =>
array (
),
'ignored_functions' =>
array (
),
'ignored_extensions' =>
array (
),
'ignored_constants' =>
array (
),
'max_version' => '',
'version' => '5.2.0',
'classes' =>
array (
0 => 'Exception',
),
'extensions' =>
array (
),
'constants' =>
array (
0 => 'PHP_SHLIB_SUFFIX',
1 => 'TRUE',
2 => 'UPLOAD_ERR_CANT_WRITE',
3 => 'UPLOAD_ERR_EXTENSION',
4 => 'UPLOAD_ERR_FORM_SIZE',
5 => 'UPLOAD_ERR_INI_SIZE',
6 => 'UPLOAD_ERR_NO_FILE',
7 => 'UPLOAD_ERR_NO_TMP_DIR',
8 => 'UPLOAD_ERR_OK',
9 => 'UPLOAD_ERR_PARTIAL',
),
'tokens' =>
array (
0 => 'abstract',
1 => 'catch',
2 => 'clone',
3 => 'final',
4 => 'implements',
5 => 'instanceof',
6 => 'interface',
7 => 'private',
8 => 'protected',
9 => 'public',
10 => 'throw',
11 => 'try',
),
'cond_code' =>
array (
0 => 2,
),
'PHP_CompatInfo/tests/parseDir/extensions.php' =>
array (
'ignored_functions' =>
array (
),
'ignored_extensions' =>
array (
),
'ignored_constants' =>
array (
),
'max_version' => '',
'version' => '4.3.2',
'classes' =>
array (
),
'extensions' =>
array (
),
'constants' =>
array (
0 => 'PHP_SHLIB_SUFFIX',
1 => 'TRUE',
),
'tokens' =>
array (
),
'cond_code' =>
array (
0 => 2,
),
),
'PHP_CompatInfo/tests/parseDir/phpinfo.php' =>
array (
'ignored_functions' =>
array (
),
'ignored_extensions' =>
array (
),
'ignored_constants' =>
array (
),
'max_version' => '',
'version' => '4.0.0',
'classes' =>
array (
),
'extensions' =>
array (
),
'constants' =>
array (
),
'tokens' =>
array (
),
'cond_code' =>
array (
0 => 0,
),
),
'PHP_CompatInfo/tests/parseDir/PHP5/tokens.php5' =>
array (
'ignored_functions' =>
array (
),
'ignored_extensions' =>
array (
),
'ignored_constants' =>
array (
),
'max_version' => '',
'version' => '5.0.0',
'classes' =>
array (
0 => 'Exception',
),
'extensions' =>
array (
),
'constants' =>
array (
),
'tokens' =>
array (
0 => 'abstract',
1 => 'catch',
2 => 'clone',
3 => 'final',
4 => 'implements',
5 => 'instanceof',
6 => 'interface',
7 => 'private',
8 => 'protected',
9 => 'public',
10 => 'throw',
11 => 'try',
),
'cond_code' =>
array (
0 => 0,
),
),
'PHP_CompatInfo/tests/parseDir/PHP5/upload_error.php' =>
array (
'ignored_functions' =>
array (
),
'ignored_extensions' =>
array (
),
'ignored_constants' =>
array (
),
'max_version' => '',
'version' => '5.2.0',
'classes' =>
array (
0 => 'Exception',
),
'extensions' =>
array (
),
'constants' =>
array (
0 => 'UPLOAD_ERR_CANT_WRITE',
1 => 'UPLOAD_ERR_EXTENSION',
2 => 'UPLOAD_ERR_FORM_SIZE',
3 => 'UPLOAD_ERR_INI_SIZE',
4 => 'UPLOAD_ERR_NO_FILE',
5 => 'UPLOAD_ERR_NO_TMP_DIR',
6 => 'UPLOAD_ERR_OK',
7 => 'UPLOAD_ERR_PARTIAL',
),
'tokens' =>
array (
0 => 'throw',
),
'cond_code' =>
array (
0 => 0,
),
),
)
We have global result, then follow by each file parsed in sub-directories.