Context::get

(PHP 8.6+, True Async 1.0)

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

Отримує значення за ключем з поточного контексту. Якщо ключ не знайдено на поточному рівні, пошук продовжується вгору по ієрархії батьківських контекстів.

На відміну від find(), цей метод кидає виключення, якщо ключ не знайдено на жодному рівні. Використовуйте get(), коли наявність значення є обов’язковою вимогою.

Параметри

key
Ключ для пошуку. Може бути рядком або об’єктом. При використанні об’єкта як ключа пошук виконується за посиланням на об’єкт.

Значення, що повертаються

Значення, пов’язане з ключем.

Помилки

Приклади

Приклад #1 Отримання обов’язкового значення

<?php

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

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

spawn(function() {
    // Отримуємо значення, яке має існувати
    $db = current_context()->get('db_connection');
    $db->query('SELECT 1');
});

Приклад #2 Обробка відсутнього ключа

<?php

use function Async\current_context;

try {
    $value = current_context()->get('missing_key');
} catch (\Async\ContextException $e) {
    echo "Ключ не знайдено: " . $e->getMessage() . "\n";
}

Приклад #3 Використання ключа-об’єкта

<?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) {
    // Ключ-об'єкт забезпечує унікальність без конфліктів імен
    $pdo = current_context()->get($dbKey);
    $pdo->exec('CREATE TABLE test (id INTEGER)');
});

Дивіться також