修剪 - 动态更改设置

时间:2017-02-27 17:52:47

标签: php slim

我想在确定路由后动态更新应用程序的设置值。例如,在大多数路由中,我将超时设置为600秒。这已在设置文件中进行了硬编码。

return [
'settings' => [
  'timeout' => 600,
....]
];

但是在某些特殊路由中,我需要根据输入将超时更改为其他值。例如

$app->get('/route1', function ($request, $response, $args) {
   $timeout = (some calculations from $args)
   $container['settings']['timeout'] = $timeout;
});

但是在将超时值设置为容器时出现此错误:

Notice: Indirect modification of overloaded element of Slim\Collection has no effect 

那么动态更新设置的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

尽管$container['settings']看起来像是一个数组访问,但它实际上是对一个闭包的调用,然后返回一个数组,这就是你得到那个通知的原因。解决方案是检索数组然后修改它:

$settings = $container['settings'];
$settings['timeout'] = $timeout;