关于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 :(得分:1)
您正在从匿名函数的作用域回显,并从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
});
您将按以下方式使用它:
\\