Context::get
(PHP 8.6+, True Async 1.0)
public Context::get(string|object $key): mixed
Ruft einen Wert anhand des Schluessels aus dem aktuellen Kontext ab. Wenn der Schluessel auf der aktuellen Ebene nicht gefunden wird, wird die Suche in der Hierarchie der uebergeordneten Kontexte fortgesetzt.
Im Gegensatz zu find() wirft diese Methode eine Exception, wenn der Schluessel auf keiner Ebene gefunden wird.
Verwenden Sie get(), wenn das Vorhandensein eines Werts eine zwingende Voraussetzung ist.
Parameter
- key
- Der zu suchende Schluessel. Kann ein String oder ein Objekt sein. Bei Verwendung eines Objekts als Schluessel wird die Suche anhand der Objektreferenz durchgefuehrt.
Rueckgabewert
Der mit dem Schluessel verknuepfte Wert.
Fehler
- Wirft
Async\ContextException, wenn der Schluessel im aktuellen oder einem uebergeordneten Kontext nicht gefunden wird.
Beispiele
Beispiel #1 Einen erforderlichen Wert abrufen
<?php
use function Async\current_context;
use function Async\spawn;
current_context()->set('db_connection', $pdo);
spawn(function() {
// Einen Wert abrufen, der existieren muss
$db = current_context()->get('db_connection');
$db->query('SELECT 1');
});
Beispiel #2 Behandlung eines fehlenden Schluessels
<?php
use function Async\current_context;
try {
$value = current_context()->get('missing_key');
} catch (\Async\ContextException $e) {
echo "Schluessel nicht gefunden: " . $e->getMessage() . "\n";
}
Beispiel #3 Verwendung eines Objekt-Schluessels
<?php
use function Async\current_context;
use function Async\spawn;
class DatabaseKey {}
$dbKey = new DatabaseKey();
current_context()->set($dbKey, new PDO('sqlite::memory:'));
spawn(function() use ($dbKey) {
// Objekt-Schluessel stellt Eindeutigkeit ohne Namenskonflikte sicher
$pdo = current_context()->get($dbKey);
$pdo->exec('CREATE TABLE test (id INTEGER)');
});
Siehe auch
- Context::find — Sichere Suche (gibt null zurueck)
- Context::has — Pruefen, ob ein Schluessel existiert
- Context::getLocal — Wert nur aus dem lokalen Kontext abrufen
- Context::set — Wert im Kontext setzen