Context::findLocal
(PHP 8.6+, True Async 1.0)
public Context::findLocal(string|object $key): mixed
Sucht einen Wert anhand des Schluessels nur im aktuellen (lokalen) Kontext. Im Gegensatz zu find()
durchsucht diese Methode nicht die Hierarchie der uebergeordneten Kontexte.
Gibt null zurueck, wenn der Schluessel auf der aktuellen Ebene nicht gefunden wird.
Parameter
- key
- Der zu suchende Schluessel. Kann ein String oder ein Objekt sein.
Rueckgabewert
Der mit dem Schluessel verknuepfte Wert im lokalen Kontext oder null, wenn der Schluessel nicht gefunden wird.
Beispiele
Beispiel #1 Unterschied zwischen find und 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() sucht in der Hierarchie nach oben
echo current_context()->find('config') . "\n"; // "global_value"
// findLocal() sucht nur auf der aktuellen Ebene
echo current_context()->findLocal('local_data') . "\n"; // "local_value"
var_dump(current_context()->findLocal('config')); // NULL
});
Beispiel #2 Verwendung mit einem Objekt-Schluessel
<?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');
// Objekt-Schluessel vom Eltern-Kontext ist ueber findLocal nicht sichtbar
var_dump(current_context()->findLocal($parentKey)); // NULL
var_dump(current_context()->findLocal($localKey)); // "child_value"
});
Beispiel #3 Ueberschreiben eines Eltern-Werts
<?php
use function Async\current_context;
use function Async\spawn;
current_context()->set('timeout', 5000);
spawn(function() {
// Pruefen, ob der Wert lokal ueberschrieben wurde
if (current_context()->findLocal('timeout') === null) {
// Vererbten Wert verwenden, kann aber ueberschrieben werden
current_context()->set('timeout', 3000);
}
echo current_context()->findLocal('timeout') . "\n"; // 3000
});
Siehe auch
- Context::find — Suche mit hierarchischer Durchquerung
- Context::getLocal — Lokalen Wert abrufen (wirft Exception)
- Context::hasLocal — Schluessel im lokalen Kontext pruefen