如何解开laravel课程?

时间:2014-03-06 14:09:07

标签: php laravel-4

我像这样绑定一个类:

App::bind('Some_Class', 'Other_Class')

因此,对App :: make('Some_Class')的调用将返回'Other_Class'的实例。但是,稍后在脚本中我想恢复它,因此调用make现在将返回原始类。

到目前为止,我已尝试过这些:

App::bind('Some_Class', 'Some_Class')
App::bind('Some_Class', NULL)

两者都没有用 - 它们似乎导致应用程序存储类的实例,这是不好的,因为我需要能够接受参数。如果在没有参数的情况下调用构造函数,则会触发致命错误。那么,我该如何撤消绑定?

我甚至尝试过使用反射:

App::bind('Some_Class', function() {
    $args = func_get_args();
    $app = array_shift($args);
    $reflection = new ReflectionClass( 'Some_Class' );
    return $reflection->newInstanceArgs($args);
});

它仍然不起作用!

2 个答案:

答案 0 :(得分:5)

App::offsetUnset('Some_Class')应该这样做。

如果你有一个应用程序实例($ app),你甚至可以unset($app['Some_Class'])

答案 1 :(得分:0)

我相信

App::instance('Some_Class', new Some_Class);

将进行回归