Context::getLocal

(PHP 8.6+, True Async 1.0)

public Context::getLocal(string|object $key): mixed

Ruft einen Wert anhand des Schluessels nur aus dem aktuellen (lokalen) Kontext ab. Im Gegensatz zu get() sucht diese Methode nicht in uebergeordneten Kontexten.

Wenn der Schluessel auf der aktuellen Ebene nicht gefunden wird, wird eine Exception geworfen.

Parameter

key
Der zu suchende Schluessel. Kann ein String oder ein Objekt sein.

Rueckgabewert

Der mit dem Schluessel verknuepfte Wert im lokalen Kontext.

Fehler

Beispiele

Beispiel #1 Einen lokalen Wert abrufen

<?php

use function Async\current_context;
use function Async\spawn;

spawn(function() {
    current_context()->set('task_id', 42);

    // Wert ist lokal gesetzt — getLocal funktioniert
    $taskId = current_context()->getLocal('task_id');
    echo "Aufgabe: {$taskId}\n"; // "Aufgabe: 42"
});

Beispiel #2 Exception beim Zugriff auf einen vererbten Schluessel

<?php

use function Async\current_context;
use function Async\spawn;

current_context()->set('parent_value', 'hello');

spawn(function() {
    // find() wuerde den Wert im Eltern-Kontext finden
    echo current_context()->find('parent_value') . "\n"; // "hello"

    // getLocal() wirft eine Exception — Wert ist nicht im lokalen Kontext
    try {
        current_context()->getLocal('parent_value');
    } catch (\Async\ContextException $e) {
        echo "Lokal nicht gefunden: " . $e->getMessage() . "\n";
    }
});

Beispiel #3 Verwendung mit einem Objekt-Schluessel

<?php

use function Async\current_context;
use function Async\spawn;

class SessionKey {}

spawn(function() {
    $key = new SessionKey();
    current_context()->set($key, ['user' => 'admin', 'role' => 'superuser']);

    $session = current_context()->getLocal($key);
    echo "Benutzer: " . $session['user'] . "\n"; // "Benutzer: admin"
});

Siehe auch