0

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

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);
4

1 回答 1

1

您正在从匿名函数的范围内回显,并从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

});
于 2019-02-05T11:38:33.793 回答