PHP:访问其闭包范围之外的变量

srp*_*rph 2 php closures scope

有没有办法从闭包外的闭包访问变量?例如,我想$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);
}
Run Code Online (Sandbox Code Playgroud)

我尝试了这个解决方案,但我觉得这既不奏效,也不是一个好习惯:

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

    return json_decode($wallet);
}
Run Code Online (Sandbox Code Playgroud)

hsz*_*hsz 5

只需尝试:

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);
}
Run Code Online (Sandbox Code Playgroud)