如何访问Ratchet WebSockets中的Guzzle QueryString参数?

问题描述:

嗨,我正在使用radchet websocket。我很难从对象变量中获取数据。如何访问Ratchet WebSockets中的Guzzle QueryString参数?

请检查我的代码:

var conn = new WebSocket('ws://localhost:8080?user_id=10&receiver_id=20'); 
$querystring = $conn->WebSocket->request->getQuery(); 
print_r($querystring); 

输出:

Guzzle\Http\QueryString Object 
(
    [fieldSeparator:protected] => & 
    [valueSeparator:protected] => = 
    [urlEncode:protected] => RFC 3986 
    [aggregator:protected] => 
    [data:protected] => Array 
     (
      [user_id] => 10 
      [receiver_id] => 20 
     ) 
) 

上面的代码,我想user_idreceiver_id,但我无法得到。

我的代码:

echo $querystring->data:protected['user_id']; 
echo $querystring->data:protected['receiver_id']; 

我也附和,但得到的错误消息。请帮帮我。

编辑:

如果我转换对象阵列它没有显示正确的格式。见下文。

$array = (array) $querystring; 
print_r($array); 

输出:

Array 
(
    [ * fieldSeparator] => & 
    [ * valueSeparator] => = 
    [ * urlEncode] => RFC 3986 
    [ * aggregator] => 
    [ * data] => Array 
     (
      [user_id] => 10 
      [receiver_id] => 20 
     ) 

) 
+0

'protected'是知名度哟你的财产。而且由于它是受保护的,你需要一个公开的方法来从课堂外调用它! – Rizier123

+1

我无法想象为什么你想得到你发送给请求的相同值。也许你可以直接从请求中获取? –

+0

如何直接获取? – Developer

Guzzle\Http\QueryString延伸Guzzle\Common\Collection所以你应该能够使用收集的方法:

$user_id = $querystring->get('user_id'); 
$receiver_id = $querystring->get('receiver_id'); 

$parameters = $querystring->toArray(); 
$user_id = $parameters['user_id']; 
$receiver_id = $parameters['receiver_id']; 
+0

感谢您的回答:) – Developer

+0

谢谢Furgas和chatfun .i有同样的问题。 – Pradeepta