mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2025-08-04 21:28:06 +02:00
- Gracefully error out of obscure bug involving non-static autoloaders
- Test multiple autoloaders - Remove local URL test; doesn't work for other people git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1565 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
@@ -12,6 +12,16 @@ function my_autoload($class) {
|
||||
eval("class $class {}");
|
||||
return true;
|
||||
}
|
||||
class MyClass {
|
||||
public static function myAutoload($class) {
|
||||
if ($class == 'Foo') {
|
||||
echo "Special autoloading Foo..." . PHP_EOL;
|
||||
eval("class $class {}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
spl_autoload_register(array('MyClass', 'myAutoload'));
|
||||
spl_autoload_register('my_autoload');
|
||||
|
||||
require '../library/HTMLPurifier.auto.php';
|
||||
@@ -20,9 +30,11 @@ $config = HTMLPurifier_Config::createDefault();
|
||||
$purifier = new HTMLPurifier($config);
|
||||
echo $purifier->purify('<b>Salsa!') . PHP_EOL;
|
||||
|
||||
// purposely invoke older autoload
|
||||
// purposely invoke older autoloads
|
||||
$foo = new Foo();
|
||||
$bar = new Bar();
|
||||
|
||||
--EXPECT--
|
||||
<b>Salsa!</b>
|
||||
Special autoloading Foo...
|
||||
Autoloading Bar...
|
||||
|
@@ -0,0 +1,29 @@
|
||||
--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";
|
||||
}
|
||||
--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
|
Reference in New Issue
Block a user