class Module {
public function share($moduleName, $func) {
$this->$moduleName = $func();
}
}
$module = new Module();
$module->share('router', function(){
return new Router();
});
$module->share('acl', function(){
return new ACL();
});
share()
вынести в конструктор класса.$newModule = clone $module;