PHP NATS函数发送结果

PHP NATS sending result out of the function

我在 PHP NATS 方面遇到了一些麻烦。我正在获取并打印消息正文值。一切正常。只是 return 结果就是问题所在。这是代码

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 如果我这样使用,则不会 returning 任何东西。

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

您正在从匿名函数的作用域回显,并从 connect() 函数的作用域返回。

您可以采用的一种方法是回调,您可以让您的函数将闭包作为参数,并从 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

});