【问题标题】:How to access Guzzle QueryString parameters in Ratchet WebSockets?如何访问 Ratchet WebSockets 中的 Guzzle QueryString 参数?
【发布时间】:2015-04-30 10:34:42
【问题描述】:

您好,我正在使用 radchet websocket。我无法从对象变量中获取数据。

请检查我的代码:

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
        )

)

【问题讨论】:

  • protected 是您的资源的可见性。而且由于它受到保护,您需要一个公共方法来从类外部调用它!
  • 我无法想象您为什么要获得与发送给请求的值相同的值。也许您可以直接从请求中获取?
  • 如何直接获取?

标签: php guzzle ratchet


【解决方案1】:

Guzzle\Http\QueryString extends Guzzle\Common\Collection 所以你应该可以使用 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'];

【讨论】:

  • 感谢您的回答:)
  • 谢谢 Furgas 和 chatfun。我遇到了同样的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
相关资源
最近更新 更多