L8 - HTTP 并发请求 - 动态构建混乱的闭包

vla*_*ani 0 php closures http request laravel-8

我正在测试“并发请求”功能:

但我对如何动态创建闭包输入值感到困惑。

例如我有一个数组:

$a = [
    'foo' => 'http//localhost/1',
    'bar' => 'http//localhost/2'
];
Run Code Online (Sandbox Code Playgroud)

我需要动态地创建类似的东西:

use Illuminate\Http\Client\Pool;
use Illuminate\Support\Facades\Http;

$responses = Http::pool(fn (Pool $pool) => [
    $pool->as('foo')->get('http://localhost/1'),
    $pool->as('bar')->get('http://localhost/2'),
]);

return $responses['foo']->body();
Run Code Online (Sandbox Code Playgroud)

更新$a关闭内容应该发生变化。我怎样才能做到这一点?

谢谢

vla*_*ani 5

好的,我找到了解决方案:

use Illuminate\Http\Client\Pool;
use Illuminate\Support\Facades\Http;

$a = [
    'foo' => 'http//localhost/1',
    'bar' => 'http//localhost/2'
];

$fn2 = function (\Illuminate\Http\Client\Pool $pool) use ($a) {
    foreach ($a as $aKey => $aVal) {
        $arrayPools[] = $pool->as($aKey)->get($aVal);
    }
    return $arrayPools;
};
$responses = \Illuminate\Support\Facades\Http::pool($fn2);

echo $responses['foo']->body();
Run Code Online (Sandbox Code Playgroud)