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
});
我在 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
});