Context::has
(PHP 8.6+, True Async 1.0)
public Context::has(string|object $key): bool
Checks whether a value with the specified key exists in the current context or in one of the parent contexts. The search is performed up the hierarchy.
Parameters
- key
- The key to check. Can be a string or an object.
Return Value
true if the key is found in the current or any parent context, false otherwise.
Examples
Example #1 Checking for a key before use
<?php
use function Async\current_context;
use function Async\spawn;
current_context()->set('locale', 'ru_RU');
spawn(function() {
if (current_context()->has('locale')) {
$locale = current_context()->find('locale');
echo "Locale: {$locale}\n"; // "Locale: ru_RU"
} else {
echo "Locale not set, using default\n";
}
});
Example #2 Checking with an object key
<?php
use function Async\current_context;
$cacheKey = new stdClass();
current_context()->set($cacheKey, new RedisCache());
if (current_context()->has($cacheKey)) {
echo "Cache is available\n";
}
$unknownKey = new stdClass();
var_dump(current_context()->has($unknownKey)); // false
Example #3 Hierarchical check
<?php
use function Async\current_context;
use function Async\spawn;
current_context()->set('global_flag', true);
spawn(function() {
current_context()->set('local_flag', true);
spawn(function() {
var_dump(current_context()->has('global_flag')); // true (from root)
var_dump(current_context()->has('local_flag')); // true (from parent)
var_dump(current_context()->has('unknown')); // false
});
});
See Also
- Context::find — Find value by key
- Context::get — Get value (throws exception)
- Context::hasLocal — Check only in local context