gpt4 book ai didi

php - 从 Controller 访问 $app 对象

转载 作者:搜寻专家 更新时间:2023-10-31 21:53:37 24 4
gpt4 key购买 nike

由于 Slim 3.3 仅注入(inject) ContainerInterface,如何在 Controller 内访问 $app?

说明问题的代码:

$app = new \Slim\App;

$app->get('/home', 'HomeController:get');

$app->run();

class HomeController {
private $ci;

public function _construct($ci) {
$this->ci = $ci;
}

public function get($request, $response) {
$this->ci->get(...);
// How to access $app and dependencies like $app->jwt?
}
}

最佳答案

这是一个艰难的过程。

Slim 3 大量使用依赖注入(inject),因此您可能也想使用它。

首先,在 dependencies.php 中,您需要获取 $app 并将其放入容器中,以便稍后将其注入(inject) Controller 。

$container['slim'] = function ($c) {
global $app;
return $app;
};

然后你必须注入(inject)它:

// Generic Controller
$container['App\Controllers\_Controller'] = function ($c) {
return new _Controller($c->get('slim'));
};

现在在你的 controller.php 上:

private $slim;

/**
* @param \Psr\Log\LoggerInterface $logger
* @param \App\DataAccess $dataaccess
* @param \App\$app $slim
*/
public function __construct(LoggerInterface $logger, _DataAccess $dataaccess, $slim)
{
$this->logger = $logger;
$this->dataaccess = $dataaccess;
$this->slim = $slim;
}

现在你可以这样调用它了:

$this->slim->doSomething();

关于php - 从 Controller 访问 $app 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36364999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com