【发布时间】:2016-01-24 05:11:46
【问题描述】:
我正在尝试返回 API 调用的结果,但在我的一生中,无法将它们移出此函数。我不经常使用 PHP,但这似乎应该可以工作。我也尝试过使用全局变量(不好,我知道),但它们也不起作用。
getProdVariantsAsync 是 ProductVariation 类中的一个函数。它将结果传递给结果类并返回 JSON 格式的数据。
一切正常。我想不通的是如何在 getProdVariants 函数之外获取 $results->json() 。
更新:使用 Guzzle 框架
$prodVariants = new ProductVariation($api);
function getProdVariants($prodVariants, $sku) {
$promise = $prodVariants->getProdVariantsAsync($sku, 0, 200);
// The Result Class is called here
$promise->then(function($results) {
return $results->json();
});
}
$products = getProdVariants($prodVariants, $sku);
echo json_encode($products);
更新:
class Result {
public $correlationId;
public $body;
public $etag;
public $contentType;
public function json() {
return json_decode($this->body);
}
}
非常感谢任何帮助。
谢谢!
更新
我最终弄明白了。我需要使用等待功能来强制完成承诺。谢谢大家的指导和建议。这是我为使其正常工作所做的:
$prodVariants = new ProductVariation($api);
function getProdVariants($prodVariants, $sku) {
$promise = $prodVariants->getProdVariantsAsync($sku, 0, 200);
return $promise->then(function($results) {
return $results->json();
});
}
$products = getProdVariants($prodVariants, $sku)->wait(function($results){
return $results;
});
echo json_encode($products);
【问题讨论】: