在中间件中设置 Slim 容器
Set Slim container within middleware
如何在中间件的 Slim 容器中设置一些东西?以下是我尝试过的。
$app = new \Slim\App(); // Using Slim 3.0
$app->add(function ($request, $response, $next) {
$this->logger->addInfo('$this'.print_r($this,1)); //This works, so I can access the container
$this->app->getContainer()['xxx']='yyy';
$next->getContainer()['foo']='bar';
$this->bla=123;
$this->logger->addInfo('$this'.print_r($this,1));
$response = $next($request, $response);
return $response;
});
$container = $app->getContainer();
$container['logger'] = function() {
$logger = new \Monolog\Logger('my_logger');
$file_handler = new \Monolog\Handler\StreamHandler("../logs/app.log");
$logger->pushHandler($file_handler);
return $logger;
};
$this->app->getContainer()['xxx']='yyy';
应该是
$this['xxx'] = 'yyy';
因为容器绑定到可调用对象。
如何在中间件的 Slim 容器中设置一些东西?以下是我尝试过的。
$app = new \Slim\App(); // Using Slim 3.0
$app->add(function ($request, $response, $next) {
$this->logger->addInfo('$this'.print_r($this,1)); //This works, so I can access the container
$this->app->getContainer()['xxx']='yyy';
$next->getContainer()['foo']='bar';
$this->bla=123;
$this->logger->addInfo('$this'.print_r($this,1));
$response = $next($request, $response);
return $response;
});
$container = $app->getContainer();
$container['logger'] = function() {
$logger = new \Monolog\Logger('my_logger');
$file_handler = new \Monolog\Handler\StreamHandler("../logs/app.log");
$logger->pushHandler($file_handler);
return $logger;
};
$this->app->getContainer()['xxx']='yyy';
应该是
$this['xxx'] = 'yyy';
因为容器绑定到可调用对象。