Scope::inherit

(PHP 8.6+, True Async 1.0)

public static function inherit(?Scope $parentScope = null): Scope

Crea un nuovo Scope che eredita dallo scope genitore specificato. Se il parametro $parentScope non viene fornito (o e’ null), il nuovo scope eredita dallo scope attivo corrente.

Lo scope figlio eredita i gestori delle eccezioni e le politiche di cancellazione dal genitore.

Parametri

parentScope — lo scope genitore da cui il nuovo scope ereditera’. Se null, viene utilizzato lo scope attivo corrente.

Valore di ritorno

Scope — un nuovo scope figlio.

Esempi

Esempio #1 Creazione di uno scope figlio da quello corrente

<?php

use Async\Scope;
use function Async\spawn;

$parentScope = new Scope();

$parentScope->spawn(function() {
    // All'interno della coroutine, lo scope corrente e' $parentScope
    $childScope = Scope::inherit();

    $childScope->spawn(function() {
        echo "In esecuzione nello scope figlio\n";
    });

    $childScope->awaitCompletion();
});

Esempio #2 Specifica esplicita dello scope genitore

<?php

use Async\Scope;

$rootScope = new Scope();
$childScope = Scope::inherit($rootScope);

$childScope->spawn(function() {
    echo "Coroutine nello scope figlio\n";
});

// La cancellazione del genitore cancella anche lo scope figlio
$rootScope->cancel();

Vedi anche