我正在尝试使用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) {
}
};
答案 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());