Build your Exception Rules System
Who need to fix error ?
Since version 1.9.0, PHP_CompatInfo (aka PCI) used a full data dictionary system based on source files (set of versions.xml) used by the PHP Manual generation itself.
Of course, if extensions files reference (of phpdoc) changed, you have to wait a new release of PCI to see bugs/changes fixed.
If you can't wait a new PCI release, or because reference (phpdoc) files are fake and not yet fixed, there is an alternative solution named Exception Rules System (aka ERS).
Procedure to build your ERS for PHP4 users
This procedure is not secure, because you can lose your changes if you install a new PCI release that did not included your fixes.
End-users have to fix the wrong values in data dictionaries themself (by hand).
Procedure to build your ERS for PHP5 users
This procedure is pretty secure, and minimize risk to lose informations.
Version 1.9.0 of PCI used itself the ERS to fix data still missing in phpdoc reference.
Reason: Migration from monolithic
http://cvs.php.net/viewvc.cgi/phpdoc/phpbook/phpbook-xsl/version.xml
to specific extension filehttp://cvs.php.net/viewvc.cgi/phpdoc/en/reference/*/version.xml
is not yet over !
pciconf CLI script build data dictionary from source below :
-
the phpdoc reference mirror files installed in PCI data directory
@data_dir@/PHP_CompatInfo/data/phpdocref/
, where @data_dir@ identify your PEAR data directory. -
a list of Exception Rules installed in
@php_dir@/scripts/pciconf/
, where @php_dir@ identify your PEAR directory.
Default Exception Rules are provided by a set of file s named
*_func_exception.php
, *_const_exception.php
,
*_class_exception.php
, where * means for the extension name
(case sensitive).
Exception Rules files have the same structure as data dictionary. Only the array php variable name is different.
-
$function_exceptions
for the related extension functions list -
$constant_exceptions
for the related extension constants list -
$class_exceptions
for the related extension classes list
pciconf detect presence of Exception Rules by the
exceptions.conf.php
file.
This file implement a required function
mixed getExceptions (
string $extension
, string $type
)
$extension
identify the extension name,
while second argument $type
identify the kind of exception
(version, class, function, constant) to proceed.
If function return FALSE, that means there are no value to apply/merge with the phpdoc base reference. Otherwise, function should return a compatible data dictionary structure (array) what contains all news/changes to apply.
To use your own ERS, you have to tell it to the pciconf script with the --exception switch.
Example: pciconf --exception /home/users/farell/myERS.php
In summary:
-
Build your own ERS to be free to fix all errors you found without to wait a PHP Manual/PCI new version.
-
Use a directory acessible in your include_path to store result of data dictionaries corresponding to your platform, and avoid to overwrite the default PCI installation.