Scope::inherit
(PHP 8.6+, True Async 1.0)
public static function inherit(?Scope $parentScope = null): Scope
Создаёт новый Scope, наследующий от указанного родительского scope. Если параметр $parentScope не указан (или равен null), новый scope наследует от текущего активного scope.
Дочерний scope наследует обработчики исключений и политики отмены от родительского.
Параметры
parentScope — родительский scope, от которого будет наследоваться новый. Если null, используется текущий активный scope.
Возвращаемое значение
Scope — новый дочерний scope.
Примеры
Пример #1 Создание дочернего scope от текущего
<?php
use Async\Scope;
use function Async\spawn;
$parentScope = new Scope();
$parentScope->spawn(function() {
// Внутри корутины текущий scope — это $parentScope
$childScope = Scope::inherit();
$childScope->spawn(function() {
echo "Работаю в дочернем scope\n";
});
$childScope->awaitCompletion();
});
Пример #2 Явное указание родительского scope
<?php
use Async\Scope;
$rootScope = new Scope();
$childScope = Scope::inherit($rootScope);
$childScope->spawn(function() {
echo "Корутина в дочернем scope\n";
});
// Отмена родителя отменяет и дочерний scope
$rootScope->cancel();
См. также
- Scope::__construct — Создать корневой Scope
- Scope::getChildScopes — Получить дочерние scope
- Scope::dispose — Отменить и закрыть scope