如何在Slim 3中的DI中配置中间件

时间:2016-01-04 08:54:02

标签: php slim

我想在Slim中的Dependency Container中配置几个中间件,这样我就可以在同一个地方设置几个常量并轻松添加中间件。

E.G。

$configuration = [
    'settings' => [
        'displayErrorDetails' => true,
    ],
    'auth_settings' => [
        'serect' => 'garyAPIserver',
    ],
];
$container = new Slim\Container($configuration);
$container['auth'] = function ($c) {
    return new AuthMiddleware($c['auth_settings']);
};
$app = new Slim\App($container);

我尝试在DI中调用中间件:

$app->add($app->get('auth'));

我收到了php打印的警告信息:

  

警告:缺少Slim \ App :: get()的参数2,在第12行的E:\ www \ slimServer-3.0 \ index.php中调用,并在E:\ www \ slimServer-3.0 \ vendor \ slim中定义\ slim \ Slim \ App.php第146行

错误消息由Slim打印:

Type: RuntimeException
Message: is not resolvable
File: E:\www\slimServer-3.0\vendor\slim\slim\Slim\CallableResolver.php
Line: 82

我是Slim的新手,可以在DI中设置中间件吗?是否有类似情况的指南?

1 个答案:

答案 0 :(得分:1)

您可以使用fPortfiolio变量执行此操作:

$container

然后您可以使用以下方法在路由器功能中使用它:

$app->add($container->get('auth'));

请查看here了解详情。