Laravel 10, który ukaże się w przyszłym tygodniu, wprowadzi warstwę Process
dla Laravel. Podobnie jak fasada HTTP sprawia, że praca z interfejsami API jest dziecinnie prosta, usługa Process sprawi, że praca z procesami, testowanie i uruchamianie procesów interfejsu wiersza polecenia będzie marzeniem. Podstawowe zastosowanie tej funkcji można zobaczyć w poniższym przykładzie z Pull Request #45314 autorstwa Taylora Otwella:
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);
Warstwa Process zawiera bogate funkcje od razu po wyjęciu z pudełka, takie jak:
- Płynne metody procesowe do tworzenia instancji procesu przed jej uruchomieniem
- Obsługa danych wyjściowych procesu w miarę ich odbierania
- Procesy asynchroniczne
- Pule procesów
- Bogate funkcje testowania za pomocą
fake()
- Zapobieganie bezpańskim procesom podczas testów
Testowanie procesów nigdy nie było łatwiejsze i jestem podekscytowany interfejsem API kodu wokół procesów testowania, które uruchamiasz w swoich aplikacjach:
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';
});
Sprawdź Pull Request #45314, aby uzyskać szczegółowe informacje na temat implementacji i wiele przykładów. Ta funkcja z pewnością zostanie udokumentowana wraz z wydaniem Laravel 10. Czapka z głów dla Nuno Maduro i Taylora Otwella za dodanie procesu do Laravel 10, wygląda niesamowicie!