- var_dump: documentation ( source)
- class_alias: documentation ( source)
- strtolower: documentation ( source)
<?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_register_autoload($alias_autoloader);
class Foo
{
function test() {
return get_class_name($this);
}
}
class BarCollision extends Foo
{
}
$alias('Bar', 'Foo');
$alias('BarCollision', 'Foo');
$b = new Bar;
$c = new BarCollision;
var_dump($b->test(), $c->test());