ComponentesContext::get

Context::get ​

(PHP 8.6+, True Async 1.0)

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

Obtiene un valor por clave del contexto actual. Si la clave no se encuentra en el nivel actual, la búsqueda continúa subiendo por la jerarquía de contextos padre.

A diferencia de find(), este método lanza una excepción si la clave no se encuentra en ningún nivel. Use get() cuando la presencia de un valor es un requisito obligatorio.

Parámetros ​

key : La clave a buscar. Puede ser una cadena o un objeto. Cuando se usa un objeto como clave, la búsqueda se realiza por referencia de objeto.

Valor de retorno ​

El valor asociado con la clave.

Errores ​

  • Lanza Async\ContextException si la clave no se encuentra en el contexto actual ni en ningún contexto padre.

Ejemplos ​

Ejemplo #1 Obtener un valor requerido ​

php
<?php

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

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

spawn(function() {
    // Obtener un valor que debe existir
    $db = current_context()->get('db_connection');
    $db->query('SELECT 1');
});

Ejemplo #2 Manejo de una clave faltante ​

php
<?php

use function Async\current_context;

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

Ejemplo #3 Uso de una clave de objeto ​

php
<?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 clave de objeto garantiza unicidad sin conflictos de nombres
    $pdo = current_context()->get($dbKey);
    $pdo->exec('CREATE TABLE test (id INTEGER)');
});

Ver también ​