В другом классе у меня есть обещание , которое работает нормально. Мне нужно использовать возвращенные данные в другом контроллере, но я не знаю, как ждать данные в другом контроллере:
class PromiseController
{
private function load()
{
$client = new \GuzzleHttp\Client();
// variables omitted for example
$promise = $client->requestAsync('POST', $url, $options);
$json = null;
$promise->then(
function (ResponseInterface $res) {
$xml = simplexml_load_string($res->getBody(),'SimpleXMLElement',LIBXML_NOCDATA);
$json = json_encode($xml);
$json = $json;
// I see my json here. Great.
},
function (RequestException $e) {
Log::info($e->getMessage());
echo $e->getMessage() . "\n";
echo $e->getRequest()->getMethod();
}
);
$return $json;
}
}
Контроллер, где нужны данные:
// Leaving out the function etc
$data = ( new PromiseController )->load();
return array(
'xmlAsJson' => $data
);
Возвращенные данные всегда null
. Мне нужно дождаться данных в "нужном" контроллере, но как? Я хочу иметь отдельный контроллер для обработки xml до json перед передачей результата в array
.