swoft-cloud / swoft

🚀 PHP Microservice Full Coroutine Framework
https://swoft.org
Apache License 2.0
5.58k stars 786 forks source link

注入配置值到属性时,数据错误 #582

Closed 1291061979 closed 5 years ago

1291061979 commented 5 years ago
Q A
Bug report? yes
Feature request? no
Swoft version 1.0.0,
Swoole version 4.3.0
PHP version 7.3.2
Runtime environment Win10 wsl

Details

通过php数组配置文件,注入属性值时,数据丢失

// 以下为会导致错误的配置内容
[
    "testgame" => [
        // 所用模板
        "template" => "gsk",
        // 服务端配置
        "server"   => [],
        // 客户端配置
        "client"   => [
            "logo" => "test",
        ],
    ],
];
// 以下为注入值的代码
/**
 * @Value("${config.game}")
 * @var array
 */
public $game;
// 以下为打印出来的内容,可以看到丢了字符串的配置
array(
    'testgame' => array(
        'server' => array(),
        'client' => array(
            'logo' => 'test',
        ),
    ),
);

我发现只要某一级里同时存在字符串和数组,注入后就容易把字符串给丢了

huangzhhui commented 5 years ago

已修复,请更新 swoft/framework 到 1.0.29 以上的版本