Есть ли способ получить доступ к переменной из замыкания вне замыкания? Например, я хочу получить доступ $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);
}
Просто попробуйте с:
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);
}
Ну, идеальное решение было бы, если $this->ssh->run()
было бы вернуть возвращаемое значение функции обратного вызова. т.е .:
$wallet = $this->ssh->run(..., function ($data) { return $data; });
Не имея этого, лучшее, что вы могли бы сделать, это use
со ссылкой:
$this->ssh->run(..., function ($data) use (&$wallet) { $wallet = $data; });
^
echo $wallet;