mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-11-09 15:28:40 +00:00
Allow non-static autoload methods w/ PHP >= 5.2.11
HTML Purifier loads itself as the first autoload function by unregistering all existing functions and re-registering them after registering itself. Originally an exception was thrown when a non-static object method was encountered as the behaviour of spl_autoload_functions() did not return the object instance, but only the class name. This was filed on PHP bugs (#44144). The bug was fixed for PHP >= 5.2.11 and >= 5.3 Signed-off-by: Nick Pope <nick@nickpope.me.uk> Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
This commit is contained in:
parent
1d4a38d055
commit
0b9db1f54b
1
NEWS
1
NEWS
@ -11,6 +11,7 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier
|
|||||||
|
|
||||||
4.2.1, unknown release date
|
4.2.1, unknown release date
|
||||||
! Added %HTML.Nofollow to add rel="nofollow" to external links.
|
! Added %HTML.Nofollow to add rel="nofollow" to external links.
|
||||||
|
! More types of SPL autoloaders allowed on later versions of PHP.
|
||||||
- Make removal of conditional IE comments ungreedy; thanks Bernd
|
- Make removal of conditional IE comments ungreedy; thanks Bernd
|
||||||
for reporting.
|
for reporting.
|
||||||
- Escape CDATA before removing Internet Explorer comments.
|
- Escape CDATA before removing Internet Explorer comments.
|
||||||
|
@ -65,10 +65,11 @@ class HTMLPurifier_Bootstrap
|
|||||||
if ( ($funcs = spl_autoload_functions()) === false ) {
|
if ( ($funcs = spl_autoload_functions()) === false ) {
|
||||||
spl_autoload_register($autoload);
|
spl_autoload_register($autoload);
|
||||||
} elseif (function_exists('spl_autoload_unregister')) {
|
} elseif (function_exists('spl_autoload_unregister')) {
|
||||||
|
$buggy = version_compare(PHP_VERSION, '5.2.11', '<');
|
||||||
$compat = version_compare(PHP_VERSION, '5.1.2', '<=') &&
|
$compat = version_compare(PHP_VERSION, '5.1.2', '<=') &&
|
||||||
version_compare(PHP_VERSION, '5.1.0', '>=');
|
version_compare(PHP_VERSION, '5.1.0', '>=');
|
||||||
foreach ($funcs as $func) {
|
foreach ($funcs as $func) {
|
||||||
if (is_array($func)) {
|
if ($buggy && is_array($func)) {
|
||||||
// :TRICKY: There are some compatibility issues and some
|
// :TRICKY: There are some compatibility issues and some
|
||||||
// places where we need to error out
|
// places where we need to error out
|
||||||
$reflector = new ReflectionMethod($func[0], $func[1]);
|
$reflector = new ReflectionMethod($func[0], $func[1]);
|
||||||
|
@ -5,6 +5,9 @@ Error when registering autoload with non-static autoload already on SPL stack
|
|||||||
if (!function_exists('spl_autoload_register')) {
|
if (!function_exists('spl_autoload_register')) {
|
||||||
echo "skip - spl_autoload_register() not available";
|
echo "skip - spl_autoload_register() not available";
|
||||||
}
|
}
|
||||||
|
if (version_compare(PHP_VERSION, '5.2.11', '>=')) {
|
||||||
|
echo "skip - non-buggy version of PHP";
|
||||||
|
}
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
class NotStatic
|
class NotStatic
|
||||||
|
Loading…
Reference in New Issue
Block a user