<?php
$alias_list = [];
$alias_autoloader = function($class_name) use (&$alias_list) {
if (isset($alias_list[strtolower($class_name)])) {
class_alias($class_name, $alias_list[strtolower($class_name)]);
return true;
}
};
$alias = function($from, $to) use (&$alias_list) {
$alias_list[$to] = $from;
};
spl_autoload_register($alias_autoloader);
class Foo
{
function test() {
return get_class_name($this);
}
}
class BarCollision extends Foo
{
}
$alias('Foo', 'Bar');
$alias('Foo', 'BarCollision');
$b = new Bar;
$c = new BarCollision;
var_dump($b->test(), $c->test());
- Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- Fatal error: Uncaught Error: Class "Bar" not found in /in/tmS4m:35
Stack trace:
#0 {main}
thrown in /in/tmS4m on line 35
Process exited with code 255. - Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33
- Fatal error: Uncaught Error: Class 'Bar' not found in /in/tmS4m:35
Stack trace:
#0 {main}
thrown in /in/tmS4m on line 35
Process exited with code 255. - Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.30
- Fatal error: Class 'Bar' not found in /in/tmS4m on line 35
Process exited with code 255.
preferences:
220.55 ms | 402 KiB | 242 Q