- spl_autoload_register: documentation ( source)
- var_dump: documentation ( source)
- class_alias: documentation ( source)
- implode: documentation ( source)
- str_replace: documentation ( source)
<?php
spl_autoload_register(function($className) {
$internName = '___intern___' . str_replace(' ', '_', $className);
eval('class ' . $internName . ' { static function foo() { echo "Bar"; } }');
class_alias($internName, $className);
});
function with($className) {
$className = $className . ' with ' . implode(', ', array_slice(func_get_args(), 1));
return new $className;
}
var_dump(with('Foo', 'Bar'));
var_dump(call_user_func(['Foo with Bar', 'foo']));