Scope::inherit
(PHP 8.6+, True Async 1.0)
public static function inherit(?Scope $parentScope = null): Scope
Erstellt einen neuen Scope, der vom angegebenen Eltern-Scope erbt. Wenn der Parameter $parentScope nicht angegeben wird (oder null ist), erbt der neue Scope vom aktuell aktiven Scope.
Der Kind-Scope erbt Exception-Handler und Abbruchrichtlinien vom Eltern-Scope.
Parameter
parentScope — der Eltern-Scope, von dem der neue Scope erben wird. Wenn null, wird der aktuell aktive Scope verwendet.
Rueckgabewert
Scope — ein neuer Kind-Scope.
Beispiele
Beispiel #1 Kind-Scope vom aktuellen erstellen
<?php
use Async\Scope;
use function Async\spawn;
$parentScope = new Scope();
$parentScope->spawn(function() {
// Innerhalb der Koroutine ist der aktuelle Scope $parentScope
$childScope = Scope::inherit();
$childScope->spawn(function() {
echo "Ausfuehrung im Kind-Scope\n";
});
$childScope->awaitCompletion();
});
Beispiel #2 Eltern-Scope explizit angeben
<?php
use Async\Scope;
$rootScope = new Scope();
$childScope = Scope::inherit($rootScope);
$childScope->spawn(function() {
echo "Koroutine im Kind-Scope\n";
});
// Das Abbrechen des Eltern-Scopes bricht auch den Kind-Scope ab
$rootScope->cancel();
Siehe auch
- Scope::__construct — Einen Root-Scope erstellen
- Scope::getChildScopes — Kind-Scopes abrufen
- Scope::dispose — Abbrechen und den Scope schliessen