我试图使用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();
然后包含哪个对象引用$。 请帮我澄清一下。三江源
答案 0 :(得分:2)
$this
是苗条的依赖注入容器:Slim\Container
在DeferredCallable
内,您可以看到slim使用闭包上的bindTo
函数来设置{{1}}实例。
答案 1 :(得分:0)
注意在组封闭内,
$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中基本可行。