<?php
$alias_list = [];
$alias_autoloader = function($class_name) use (&$alias_list) {
if (isset($alias_list[strtolower($class_name)])) {
class_alias($alias_list[strtolower($class_name)], $class_name);
return true;
}
};
$alias = function($from, $to) use (&$alias_list) {
$alias_list[strtolower($to)] = $from;
};
spl_autoload_register($alias_autoloader);
class Foo
{
function test() {
return get_class($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 5.5.0 - 5.5.38, 5.6.0 - 5.6.38, 7.0.0 - 7.0.32, 7.1.0 - 7.1.24, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
- string(3) "Foo"
string(12) "BarCollision"
preferences:
227.19 ms | 404 KiB | 285 Q