Context::findLocal
(PHP 8.6+, True Async 1.0)
public Context::findLocal(string|object $key): mixed
Шукає значення за ключем лише в поточному (локальному) контексті. На відміну від find(),
цей метод не виконує пошук вгору по ієрархії батьківських контекстів.
Повертає null, якщо ключ не знайдено на поточному рівні.
Параметри
- key
- Ключ для пошуку. Може бути рядком або об’єктом.
Значення, що повертаються
Значення, пов’язане з ключем у локальному контексті, або null, якщо ключ не знайдено.
Приклади
Приклад #1 Різниця між find і findLocal
<?php
use function Async\current_context;
use function Async\spawn;
current_context()->set('config', 'global_value');
spawn(function() {
current_context()->set('local_data', 'local_value');
// find() шукає вгору по ієрархії
echo current_context()->find('config') . "\n"; // "global_value"
// findLocal() шукає лише на поточному рівні
echo current_context()->findLocal('local_data') . "\n"; // "local_value"
var_dump(current_context()->findLocal('config')); // NULL
});
Приклад #2 Використання з ключем-об’єктом
<?php
use function Async\current_context;
use function Async\spawn;
$parentKey = new stdClass();
$localKey = new stdClass();
current_context()->set($parentKey, 'parent_value');
spawn(function() use ($parentKey, $localKey) {
current_context()->set($localKey, 'child_value');
// Ключ-об'єкт з батьківського контексту не видно через findLocal
var_dump(current_context()->findLocal($parentKey)); // NULL
var_dump(current_context()->findLocal($localKey)); // "child_value"
});
Приклад #3 Перевизначення батьківського значення
<?php
use function Async\current_context;
use function Async\spawn;
current_context()->set('timeout', 5000);
spawn(function() {
// Перевіряємо, чи значення перевизначено локально
if (current_context()->findLocal('timeout') === null) {
// Використовуємо успадковане значення, але можемо перевизначити
current_context()->set('timeout', 3000);
}
echo current_context()->findLocal('timeout') . "\n"; // 3000
});
Дивіться також
- Context::find — Пошук з обходом ієрархії
- Context::getLocal — Отримати локальне значення (кидає виключення)
- Context::hasLocal — Перевірити ключ у локальному контексті