2016-09-28 5 views
1

폭식/Psr7 요청에 쿼리 매개 변수를 얻는 방법 :나는 클라이언트를 조롱과 같이 사용하는 것을 시도하고있다</p> <p>목구멍 6을 사용하고

<?php 

use GuzzleHttp\Client; 
use GuzzleHttp\Handler\MockHandler; 
use GuzzleHttp\HandlerStack; 
use GuzzleHttp\Middleware; 
use GuzzleHttp\Psr7\Request; 
use GuzzleHttp\Psr7\Response; 

$mock_handler = new MockHandler([ 
    new Response(200, ['Content-Type' => 'application/json'], 'foo'), 
]); 

$history = []; 
$history_middleware = Middleware::history($history); 

$handler_stack = HandlerStack::create($mock_handler); 
$handler_stack->push($history_middleware); 

$mock_client = new Client(['handler' => $handler_stack]); 

// Use mock client in some way 
$mock_client->get("http://example.com", [ 
    'query' => [ 
     'bar' => '10', 
     'hello' => '20' 
    ], 
]); 
// ------ 

// get original request using history 
$transaction = $history[0]; 
/** @var Request $request */ 
$request = $transaction['request']; 

// How can I get the query parameters that was used in the request (i.e. bar) 

내 질문 할 수있는 방법입니다 GuzzleHttp\Psr7\Request 클래스에 사용 된 쿼리 매개 변수가 있습니까?

가장 가까운 항목은 다음과 같습니다. $request->getUri()->getQuery()하지만이 문자열은 단지 bar=10&hello=20과 같은 문자열을 반환합니다.

답변

2

나는 내 문제를 해결 한 것 같습니다.

parse_str($request->getUri()->getQuery(), $query); 

을하고 지금은 쿼리 매개 변수의 배열을 가지고 :

간단히 말해서 나는이 작업을 수행 할 수 있습니다.

다른 솔루션도 환영합니다!