2015-04-30 29 views
0

嗨,我正在使用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

回答

5

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