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