Scope::getChildScopes
(PHP 8.6+, True Async 1.0)
php
public function getChildScopes(): arrayВозвращает массив всех дочерних scope, созданных через Scope::inherit() от данного scope. Полезно для мониторинга и отладки иерархии scope.
Возвращаемое значение
array — массив объектов Scope, являющихся дочерними для данного scope.
Примеры
Пример #1 Получение дочерних scope
php
<?php
use Async\Scope;
$parent = new Scope();
$child1 = Scope::inherit($parent);
$child2 = Scope::inherit($parent);
$children = $parent->getChildScopes();
var_dump(count($children)); // int(2)Пример #2 Мониторинг состояния дочерних scope
php
<?php
use Async\Scope;
$appScope = new Scope();
$workerScope = Scope::inherit($appScope);
$bgScope = Scope::inherit($appScope);
$workerScope->spawn(function() {
\Async\delay(1000);
});
foreach ($appScope->getChildScopes() as $child) {
$status = match(true) {
$child->isCancelled() => 'отменён',
$child->isFinished() => 'завершён',
$child->isClosed() => 'закрыт',
default => 'активен',
};
echo "Scope: $status\n";
}См. также
- Scope::inherit — Создать дочерний scope
- Scope::setChildScopeExceptionHandler — Обработчик ошибок дочерних scope