Context::findLocal
(PHP 8.6+, True Async 1.0)
public Context::findLocal(string|object $key): mixed
Cerca un valore per chiave solo nel contesto corrente (locale). A differenza di find(),
questo metodo non risale la gerarchia dei contesti genitori.
Restituisce null se la chiave non viene trovata al livello corrente.
Parametri
- key
- La chiave da cercare. Puo’ essere una stringa o un oggetto.
Valore di ritorno
Il valore associato alla chiave nel contesto locale, oppure null se la chiave non viene trovata.
Esempi
Esempio #1 Differenza tra find e 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() risale la gerarchia
echo current_context()->find('config') . "\n"; // "global_value"
// findLocal() cerca solo al livello corrente
echo current_context()->findLocal('local_data') . "\n"; // "local_value"
var_dump(current_context()->findLocal('config')); // NULL
});
Esempio #2 Utilizzo con chiave oggetto
<?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');
// La chiave oggetto del genitore non e' visibile tramite findLocal
var_dump(current_context()->findLocal($parentKey)); // NULL
var_dump(current_context()->findLocal($localKey)); // "child_value"
});
Esempio #3 Sovrascrittura di un valore del genitore
<?php
use function Async\current_context;
use function Async\spawn;
current_context()->set('timeout', 5000);
spawn(function() {
// Verifica se il valore e' sovrascritto localmente
if (current_context()->findLocal('timeout') === null) {
// Usa il valore ereditato, ma puo' sovrascriverlo
current_context()->set('timeout', 3000);
}
echo current_context()->findLocal('timeout') . "\n"; // 3000
});
Vedi anche
- Context::find — Ricerca con attraversamento gerarchico
- Context::getLocal — Ottieni il valore locale (lancia eccezione)
- Context::hasLocal — Verifica la chiave nel contesto locale