Slim - 动态更改设置
Slim - Change settings dynamically
我想在确定路线后动态更新应用程序的设置值。例如,在大多数路由中,我将超时设置为 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
那么动态更新设置的正确方法是什么?
虽然 $container['settings']
看起来像一个数组访问,但它实际上是对一个闭包的调用,然后 returns 一个数组,这就是您收到该通知的原因。解决方案是检索数组,然后修改它:
$settings = $container['settings'];
$settings['timeout'] = $timeout;
我想在确定路线后动态更新应用程序的设置值。例如,在大多数路由中,我将超时设置为 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
那么动态更新设置的正确方法是什么?
虽然 $container['settings']
看起来像一个数组访问,但它实际上是对一个闭包的调用,然后 returns 一个数组,这就是您收到该通知的原因。解决方案是检索数组,然后修改它:
$settings = $container['settings'];
$settings['timeout'] = $timeout;