mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-11-10 07:38:41 +00:00
0b9db1f54b
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>
33 lines
757 B
PHP
33 lines
757 B
PHP
--TEST--
|
|
Error when registering autoload with non-static autoload already on SPL stack
|
|
--SKIPIF--
|
|
<?php
|
|
if (!function_exists('spl_autoload_register')) {
|
|
echo "skip - spl_autoload_register() not available";
|
|
}
|
|
if (version_compare(PHP_VERSION, '5.2.11', '>=')) {
|
|
echo "skip - non-buggy version of PHP";
|
|
}
|
|
--FILE--
|
|
<?php
|
|
class NotStatic
|
|
{
|
|
public function autoload($class) {
|
|
echo "Autoloading... $class" . PHP_EOL;
|
|
eval("class $class {}");
|
|
}
|
|
}
|
|
|
|
$obj = new NotStatic();
|
|
spl_autoload_register(array($obj, 'autoload'));
|
|
|
|
try {
|
|
require '../library/HTMLPurifier.auto.php';
|
|
} catch (Exception $e) {
|
|
echo 'Caught error gracefully';
|
|
assert('strpos($e->getMessage(), "44144") !== false');
|
|
}
|
|
|
|
--EXPECT--
|
|
Caught error gracefully
|