mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
1a370d3321
A genuine problem here is that we sometime get different class casing due interaction with the ZSTR CE cache. Ignore these for now.
40 lines
885 B
PHP
40 lines
885 B
PHP
--TEST--
|
|
ReflectionClass::isSubclassOf() - fixed crash for unbound anonymous class
|
|
--SKIPIF--
|
|
<?php
|
|
if (getenv('SKIP_PRELOAD')) die('skip Anon class is linked during preloading');
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
class X {
|
|
public static function main() {
|
|
return new class() extends Base {};
|
|
}
|
|
}
|
|
class Base {}
|
|
$check = function () {
|
|
$base = Base::class;
|
|
foreach (get_declared_classes() as $class) {
|
|
if (strpos($class, '@anonymous') === false) {
|
|
continue;
|
|
}
|
|
echo "Checking for $class\n";
|
|
flush();
|
|
$rc = new ReflectionClass($class);
|
|
var_export($rc->isSubclassOf($base));
|
|
echo "\n";
|
|
}
|
|
};
|
|
// Should not show up in get_declared_classes until the anonymous class is bound.
|
|
$check();
|
|
echo "After first check\n";
|
|
X::main();
|
|
$check();
|
|
echo "Done\n";
|
|
?>
|
|
--EXPECTF--
|
|
After first check
|
|
Checking for Base@%s
|
|
true
|
|
Done
|