slim 框架闭包中的 this 关键字
this keyword inside slim framework closure
最近我开始在 PHP 学习 API,我开始学习与 API 相关的基础知识然后我决定学习一个框架,我选择了 slim microframework 所以我是阅读依赖容器文档
我看到了这个例子
$app->get('/foo', function ($req, $res, $args) {
$myService = $this->get('myService');
return $res;
});
这里这个关键字指的是 Container 对象,所以我想知道如何在 PHP 闭包中用这个关键字引用一个对象?
在这种情况下,$this
似乎就是 $app
。从文档的前面部分,您可以看到您创建了容器,将其添加到应用程序中。所以容器就在那里,注入了。
$container = new \Slim\Container;
$app = new \Slim\App($container);
虽然 Slim 是一个微框架 - 但它并不容易。您使用 Slim 3,没问题。如果您想更好地理解事物的结构 - 我推荐这个 tutorial(它适用于 Slim 4)。
经过几个小时的搜索,我得到了答案,所以我想分享它
class A{
private $privateData = 2;
public function get($func){
$c=Closure::bind($func,$this,"A");
$c();
}
public function getPrivateData(){
return $this->privateData;
}
}
$a=new A();
$a->get(function (){
var_dump($this->getPrivateData());
});
最近我开始在 PHP 学习 API,我开始学习与 API 相关的基础知识然后我决定学习一个框架,我选择了 slim microframework 所以我是阅读依赖容器文档 我看到了这个例子
$app->get('/foo', function ($req, $res, $args) {
$myService = $this->get('myService');
return $res;
});
这里这个关键字指的是 Container 对象,所以我想知道如何在 PHP 闭包中用这个关键字引用一个对象?
在这种情况下,$this
似乎就是 $app
。从文档的前面部分,您可以看到您创建了容器,将其添加到应用程序中。所以容器就在那里,注入了。
$container = new \Slim\Container;
$app = new \Slim\App($container);
虽然 Slim 是一个微框架 - 但它并不容易。您使用 Slim 3,没问题。如果您想更好地理解事物的结构 - 我推荐这个 tutorial(它适用于 Slim 4)。
经过几个小时的搜索,我得到了答案,所以我想分享它
class A{
private $privateData = 2;
public function get($func){
$c=Closure::bind($func,$this,"A");
$c();
}
public function getPrivateData(){
return $this->privateData;
}
}
$a=new A();
$a->get(function (){
var_dump($this->getPrivateData());
});