我試圖返回一個API調用的結果,但對於我的生活,無法讓它們在此函數之外。我不經常使用PHP,但這似乎應該起作用。我也試過使用全局變量(壞,我知道),但那些也不工作。PHP函數返回值爲空
getProdVariantsAsync是ProductVariation類中的函數。它將結果傳遞給結果類並返回JSON格式的數據。
所有的工作。我無法弄清楚的是如何在getProdVariants函數之外獲得$ results-> json()。
UPDATE:使用狂飲框架
$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);
UPDATE:
class Result {
public $correlationId;
public $body;
public $etag;
public $contentType;
public function json() {
return json_decode($this->body);
}
}
任何幫助是極大的讚賞。
謝謝!
UPDATE
我最終計算出來。我需要使用等待功能來強制承諾完成。謝謝大家的指導和建議。這是我做得到它的工作:
$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);
感謝蒂諾,但是這也不能工作。它仍然返回空。 – kakihara
也許promise/api調用不正確。當你打印出用於測試的then()函數的結果時,你會得到什麼嗎? –
是的,當我echo $ results-> json();有結果。這是最奇怪的事情。 – kakihara