• Reading time ~ 1 min
  • 20.02.2023

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!

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

ABOUT

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

About author CrazyBoy49z
WORK EXPERIENCE
Contact
Ukraine, Lutsk
+380979856297