Context::get

(PHP 8.6+, True Async 1.0)

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

Ottiene un valore per chiave dal contesto corrente. Se la chiave non viene trovata al livello corrente, la ricerca continua risalendo la gerarchia dei contesti genitori.

A differenza di find(), questo metodo lancia un’eccezione se la chiave non viene trovata a nessun livello. Usa get() quando la presenza di un valore e’ un requisito obbligatorio.

Parametri

key
La chiave da cercare. Puo’ essere una stringa o un oggetto. Quando si utilizza un oggetto come chiave, la ricerca viene eseguita per riferimento all’oggetto.

Valore di ritorno

Il valore associato alla chiave.

Errori

Esempi

Esempio #1 Ottenere un valore obbligatorio

<?php

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

current_context()->set('db_connection', $pdo);

spawn(function() {
    // Ottieni un valore che deve esistere
    $db = current_context()->get('db_connection');
    $db->query('SELECT 1');
});

Esempio #2 Gestione di una chiave mancante

<?php

use function Async\current_context;

try {
    $value = current_context()->get('missing_key');
} catch (\Async\ContextException $e) {
    echo "Chiave non trovata: " . $e->getMessage() . "\n";
}

Esempio #3 Utilizzo di una chiave oggetto

<?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) {
    // La chiave oggetto garantisce l'unicita' senza conflitti di nome
    $pdo = current_context()->get($dbKey);
    $pdo->exec('CREATE TABLE test (id INTEGER)');
});

Vedi anche