PHP: доступ к переменной за пределами ее закрытия

Есть ли способ получить доступ к переменной из замыкания вне замыкания? Например, я хочу получить доступ $wallet вне закрытия:

public function generate()
{
$this->ssh->run([
'~/Web/gatewayd/gateway generate_wallet'
], function($line) use ($fn)
{
$wallet = data $line.PHP_EOL;
});

return json_decode($wallet);
}

Я попробовал это решение, но я чувствую, что это не работает или хорошая практика:

public function generate()
{
$wallet = null;
$this->ssh->run([
'~/Web/gatewayd/gateway generate_wallet'
], function($line) use ($wallet)
{
$wallet = $line;
});

return json_decode($wallet);
}

1

Решение

Просто попробуйте с:

public function generate()
{
$wallet = null;

$this->ssh->run([
'~/Web/gatewayd/gateway generate_wallet'
], function($line) use ($fn, &$wallet)
{
$wallet = data $line.PHP_EOL;
});

return json_decode($wallet);
}
2

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

Ну, идеальное решение было бы, если $this->ssh->run() было бы вернуть возвращаемое значение функции обратного вызова. т.е .:

$wallet = $this->ssh->run(..., function ($data) { return $data; });

Не имея этого, лучшее, что вы могли бы сделать, это use со ссылкой:

$this->ssh->run(..., function ($data) use (&$wallet) { $wallet = $data; });
^
echo $wallet;
1