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());
});

https://codesamplez.com/programming/php-closure-tutorial