这个SLIM代码中包含哪个对象引用?

时间:2017-01-17 16:04:52

标签: php twig slim

我试图使用SLIM的twig-view渲染一个简单的HTML视图。我想知道当我使用get()函数进行路由时

//Get container
$container = $app->getContainer();

//Register Component on container

$container['view'] = function($container) {
    $view = new \Slim\Views\Twig('templates', [
    'cache' => false
    ]);

    $view->addExtension(new \Slim\Views\TwigExtension(
    $container['router'],
    $container['request']->getUri()
    ));

    return $view;

};

$app->get('/', function(Request $request, Response $response) {
    return $this->view->render($response, 'index.html');
});

$app->run();

然后包含哪个对象引用$。 请帮我澄清一下。三江源

3 个答案:

答案 0 :(得分:2)

$this是苗条的依赖注入容器:Slim\Container

DeferredCallable内,您可以看到slim使用闭包上的bindTo函数来设置{{1}}实例。

答案 1 :(得分:0)

来自SlimFramework docs

  

注意在组封闭内,$this代替$app。瘦   将闭包绑定到应用程序实例,就像它一样   路由回调的情况与容器实例绑定。

     
      
  • 在组封闭内,$this绑定到Slim\App
  • 的实例   
  • 在路由闭包内,$this绑定到Slim\Container
  • 的实例   

答案 2 :(得分:-1)

$this指向创建闭包的类

class a {
    public function test(){
       //closure is defined in the class
       return function(){
            print_r($this);//so you have access to $this
       };
    }
}

$a = new a();
$a->test();

在您的示例中,您使用的是https://www.slimframework.com/,并且它的工作方式并非如此。但它在php中基本可行。