我正在通过Slim构建API,并使用基于类的控制器方法。查看router docs(在“允许Slim实例化控制器”下),似乎DI应该将ContainerInterface
插入到类构造函数中,然后我应该能够访问{{1}在class方法中访问容器。
我创建了一个基类:
$this->container
然后尝试了这个:
class BaseController
{
protected $container;
public function __construct(\Interop\Container\ContainerInterface $container) {
$this->container = $container;
}
}
我的路线:
class PMsController extends BaseController
{
public function index(Request $request, Response $response, $args)
{
var_dump($this); exit;
}
}
但我收到错误:$app->group('/pms', function () {
$this->get('', '\App\Controllers\PMsController::index');
})->add(authMiddlware());
。当它是一个类方法时,我不知道它是如何实现的。如果我应该使用另一种访问容器的方法,我不肯定?
答案 0 :(得分:1)
尝试将路线更改为
OperationQueue
请注意单$app->group('/pms', function () {
$this->get('', '\App\Controllers\PMsController:index');
})->add(authMiddlware());
而不是使用双:
。如果您没有在其中执行任何其他功能,也不需要BaseController。 Slim 3默认为您注入::
。