使用异步PHP的可变范围(Guzzle)

时间:2017-01-11 02:36:02

标签: php guzzle guzzle6

我正在尝试使用Guzzle异步请求根据api响应填充对象的属性。

如何在响应处理程序中访问下面$myObj之类的对象来操作?

原样,$myObj无法访问。我确实发现在一个类中工作时,可以从响应处理程序中访问$this,但我希望还有另一种方法。

$myObj;

$promise = $this->client->requestAsync('GET', 'http://example.com/api/someservice');
$promise->then(
  function (ResponseInterface $res) {
    $data = json_decode($res->getBody());

    // How can I access vars like $myObj from here?
    $myObj->setName($data->name);
    // ... then persist to db
  },
  function (RequestException $e) {

  }
};

2 个答案:

答案 0 :(得分:3)

默认情况下,PHP不会在函数上下文中导入变量。您应该使用use显式列出要导入的变量。

function (ResponseInterface $res) use ($myObj) {
    $data = json_decode($res->getBody());

    // How can I access vars like $myObj from here?
    $myObj->setName($data->name);
    // ... then persist to db
},

答案 1 :(得分:-2)

您可以尝试将$ myObj设为全局。例如,在行global $myObj;

上方添加行$data = json_decode($res->getBody());