• Czas czytania ~1 min
  • 20.02.2023

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!

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

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...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297