我像这样绑定一个类:
App::bind('Some_Class', 'Other_Class')
Run Code Online (Sandbox Code Playgroud)
因此,对App :: make('Some_Class')的调用将返回'Other_Class'的实例.但是,稍后在脚本中我想恢复它,因此调用make现在将返回原始类.
到目前为止,我尝试过这些:
App::bind('Some_Class', 'Some_Class')
App::bind('Some_Class', NULL)
Run Code Online (Sandbox Code Playgroud)
两者都没有起作用 - 它们似乎导致应用程序存储类的实例,这是不好的,因为我需要能够接受参数.如果在没有参数的情况下调用构造函数,则会触发致命错误.那么,如何撤消绑定?
我甚至尝试过使用反射:
App::bind('Some_Class', function() {
$args = func_get_args();
$app = array_shift($args);
$reflection = new ReflectionClass( 'Some_Class' );
return $reflection->newInstanceArgs($args);
});
Run Code Online (Sandbox Code Playgroud)
它仍然无法正常工作!
App::offsetUnset('Some_Class') 应该这样做.
如果您有应用程序($ app)的实例,您甚至可以这样做 unset($app['Some_Class'])