Guzzle服务描述如何使用逗号分隔数组?

时间:2014-07-24 17:13:54

标签: php arrays symfony guzzle

有没有办法自动拥有一个Guzzle服务描述符字段,取一个数组,并将它解析为逗号列表?

数据

Array [ "test", "another test" ]

服务描述符

{
    "name": "YouTube",
    "baseUrl": "https://www.googleapis.com",
    "apiVersion": "v3",
    "description": "YouTube GData Graph API",
    "operations": {
        "GetVideos": {
            "httpMethod": "GET",
            "uri": "/youtube/v3/videos",
            "parameters": {
                "id": {
                    "type":"array",
                    "location":"query",
                    "required": true
                },
                "part": {
                    "location": "query",
                    "default": "snippet"
                },
                "key": {
                    "location": "query",
                    "default": "{MY KEY}",
                    "static": true
                },
                "maxResults": {
                    "location": "query",
                    "default": 50
                }
            }

        }
    }
}

该字段是id下的parameters,我想提供原始的php字符串数组,并让Guzzle自动将其转换为逗号分隔列表

现在,我必须这样做:

$command = $this->client->getCommand('GetVideos', [
    'id' => implode(",", array_slice($this->id, 0, 50))
]);

现在,它会创建一个包含多个id

实例的网址

https://www.googleapis.com/youtube/v3/videos?id=test&id=another%20test&part=snippet&key={MY KEY}&maxResults=50

我希望它像:

https://www.googleapis.com/youtube/v3/videos?id=test,another%20test&part=snippet&key={MY KEY}&maxResults=50

这可能吗?

1 个答案:

答案 0 :(得分:0)

Guzzle 3从Query对象构造查询字符串,该对象具有聚合器。通过调用->setAggregator($aggregator)上的Query,您可以覆盖默认行为。你想给它一个Guzzle\Http\QueryAggregator\CommaAggregator的实例。

关于它的Guzzle文档中没有太多内容,但有a brief mention