0
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2024-12-24 09:11:52 +00:00
htmlpurifier/tests/HTMLPurifier/PHPT/loading/error-auto-with-spl-nonstatic-autoload.phpt
Nick Pope 0b9db1f54b 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>
2010-10-28 17:25:17 +01:00

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