nats.io — PHP NATS отправляет результат из функции

У меня возникли проблемы с PHP NATS. Я получаю и распечатываю значения тела сообщения. Все работает нормально. Просто вернуть результат — это проблема. Вот код

function connect(){
require_once __DIR__ . "/../../vendor/autoload.php";
$connectionOptions = new \Nats\ConnectionOptions();
$connectionOptions->setHost('localhost')->setPort(4222);
$c = new Nats\Connection($connectionOptions);
$c->connect();
$c->request('sayhello', 'Marty McFly', function ($response) {
echo $response->getBody();
return $response->getBody();
});
}

echo работает и печатает значения, в то время как return ничего не возвращает, если я использую вот так.

$res = connect():
print_r($res);

0

Решение

Вы повторяете область действия анонимной функции и возвращаетесь из области действия connect() функция.

Один из подходов, который вы можете использовать, это обратный вызов, вы можете заставить свою функцию принимать Closure в качестве аргумента и запускать его изнутри. connect() с результатом в качестве аргумента:

function connect(\Closure $callback){
require_once __DIR__ . "/../../vendor/autoload.php";
$connectionOptions = new \Nats\ConnectionOptions();
$connectionOptions->setHost('localhost')->setPort(4222);
$c = new Nats\Connection($connectionOptions);
$c->connect();
$c->request('sayhello', 'Marty McFly', function ($response) use ($callback) {
echo $response->getBody();
$callback(response->getBody());
});
}

И вы бы использовали его следующим образом:

connect(function ($result) {
// here you've got an access to the $response->getBody() from connect function

});
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]