Context::getLocal

(PHP 8.6+, True Async 1.0)

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

Ottiene un valore per chiave solo dal contesto corrente (locale). A differenza di get(), questo metodo non cerca nei contesti genitori.

Se la chiave non viene trovata al livello corrente, lancia un’eccezione.

Parametri

key
La chiave da cercare. Puo’ essere una stringa o un oggetto.

Valore di ritorno

Il valore associato alla chiave nel contesto locale.

Errori

Esempi

Esempio #1 Ottenere un valore locale

<?php

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

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

    // Il valore e' impostato localmente — getLocal funziona
    $taskId = current_context()->getLocal('task_id');
    echo "Task: {$taskId}\n"; // "Task: 42"
});

Esempio #2 Eccezione quando si accede a una chiave ereditata

<?php

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

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

spawn(function() {
    // find() troverebbe il valore nel genitore
    echo current_context()->find('parent_value') . "\n"; // "hello"

    // getLocal() lancia un'eccezione — il valore non e' nel contesto locale
    try {
        current_context()->getLocal('parent_value');
    } catch (\Async\ContextException $e) {
        echo "Non trovato localmente: " . $e->getMessage() . "\n";
    }
});

Esempio #3 Utilizzo con chiave oggetto

<?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 "Utente: " . $session['user'] . "\n"; // "Utente: admin"
});

Vedi anche