Mettere in pausa una funzione in Laravel

Mattepuffo's logo
Mettere in pausa una funzione in Laravel

Mettere in pausa una funzione in Laravel

In PHP abbiamo già la funzione sleep che ci permette di mettere in pausa una funzione.

Essendo parte di PHP possiamo tranquillamente usarla anche in Laravel ovviamente.

Ad esempio:

namespace App\Http\Controllers;

class TestController extends Controller {

  public function index(): void {
    echo "DO STUFF 1\n";
    sleep(10);
    echo "DO STUFF 2";
  }

}

Ovviamente Laravel ci mette a disposizione anche una sua classe apposita: questo codice è equivalente a quello sopra:

namespace App\Http\Controllers;

use Illuminate\Support\Sleep;

class TestController extends Controller {

  public function index(): void {
    echo "DO STUFF 1\n";
    Sleep::for(5)->seconds();
    echo "DO STUFF 2";
  }

}

Ma allora perchè non usare la funzione standard?

Supponiamo di dover fare diversi test, e di avere diversi sleep nel codice; i test rallenterebbero parecchio, e magari non ci serve.

Se usiamo la classe di Laravel possiamo bypassare gli sleep con questa riga di codice, da levare poi in produzione ovviamente:

namespace App\Http\Controllers;

use Illuminate\Support\Sleep;

class TestController extends Controller {

  public function index(): void {
    Sleep::fake();

    echo "DO STUFF 1\n";
    Sleep::for(5)->seconds();
    echo "DO STUFF 2";
  }

}

Enjoy!


Condividi

Commentami!