进程门面即将登陆 Laravel 10
发布时间 作者 Paul Redmond
将于下周发布的 Laravel 10 将为 Laravel 引入一个 Process
层。就像 HTTP 门面使处理 API 变得轻而易举一样,Process 服务将使处理、测试和运行 CLI 进程变得轻松愉快。您可以在以下来自 Pull Request #45314 的示例中看到此功能的基本用法,该示例由 Taylor Otwell 提供。
use Illuminate\Support\Facades\Process; $result = Process::run('ls -la'); $result->successful();$result->failed();$result->exitCode();$result->output();$result->errorOutput();$result->throw();$result->throwIf($condition);
Process 层包含丰富的开箱即用的功能,例如
- 流畅的进程方法,用于在运行进程之前构建进程实例
- 处理进程输出,使其能够被接收
- 异步进程
- 进程池
- 通过
fake()
提供丰富的测试功能 - 在测试期间防止出现无关进程
测试进程从未如此简单,我对您在应用程序中运行的进程的测试代码 API 感到兴奋。
Process::fake([ 'ls *' => Process::result('Hello World'),]); $result = Process::run('ls -la'); Process::assertRan(function ($process, $result) { return $process->command == 'ls -la';}); Process::assertRanTimes(function ($process, $result) { return $process->command == 'ls -la';}, times: 1); Process::assertNotRan(function ($process, $result) { return $process->command == 'cat foo';});
查看 Pull Request #45314 以了解实现细节和大量示例。此功能将在 Laravel 10 发布后得到详细的文档记录。感谢 Nuno Maduro 和 Taylor Otwell 为 Laravel 10 添加 Process,它看起来很棒!