News

Process Facade Coming to Laravel 10

Published
Process Facade Coming to Laravel 10 image

Laravel 10, due out next week, will introduce a Process layer for Laravel. Like the HTTP facade makes working with APIs a cinch, the Process service will make working with, testing, and running CLI processes a dream to work with. You can see the basic usage of this feature in the following example from Pull Request #45314 by 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);

The Process layer includes rich features out of the box, such as:

  • Fluent process methods to build a process instance before running it
  • Process output handling as it is received
  • Asynchronous processes
  • Process Pools
  • Rich testing features via fake()
  • Preventing stray processes during tests

Testing processes has never been easier, and I am excited for the code API around testing processes that you run in your applications:

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';
});

Check out Pull Request #45314 for implementation details and plenty of examples. This feature will surely be documented with the release of Laravel 10. A hat tip to Nuno Maduro and Taylor Otwell for adding Process to Laravel 10, it looks amazing!

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
NativePHP v4: Build Native iOS and Android UI in Blade image

NativePHP v4: Build Native iOS and Android UI in Blade

Read article
Laravel Lock: Distributed Locks for Models and Routes image

Laravel Lock: Distributed Locks for Models and Routes

Read article
Laravel Image Responses: Serve Resized Images From Routes image

Laravel Image Responses: Serve Resized Images From Routes

Read article
Pause All Laravel Queues During a Deploy image

Pause All Laravel Queues During a Deploy

Read article
Laravel Terminal UI for the artisan dev Command image

Laravel Terminal UI for the artisan dev Command

Read article
Pause All Queues and a New artisan dev UI in Laravel 13.25 image

Pause All Queues and a New artisan dev UI in Laravel 13.25

Read article