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
- Scope::__construct — Crea uno Scope radice
- Scope::getChildScopes — Ottieni gli scope figli
- Scope::dispose — Cancella e chiudi lo scope