Context::unset

(PHP 8.6+, True Async 1.0)

public Context::unset(string|object $key): Context

Удаляет значение по ключу из текущего контекста. Удаление затрагивает только локальный контекст — значения в родительских контекстах не изменяются.

Метод возвращает объект Context, что позволяет использовать цепочки вызовов (chaining).

Параметры

key
Ключ для удаления. Может быть строкой или объектом.

Возвращаемое значение

Объект Context для цепочки вызовов.

Примеры

Пример #1 Удаление значения из контекста

<?php

use function Async\current_context;

current_context()
    ->set('temp_data', 'значение')
    ->set('keep_data', 'сохранить');

echo current_context()->find('temp_data') . "\n"; // "значение"

// Удаляем временные данные
current_context()->unset('temp_data');

var_dump(current_context()->find('temp_data')); // NULL
echo current_context()->find('keep_data') . "\n"; // "сохранить"

Пример #2 Удаление с объектным ключом

<?php

use function Async\current_context;

$tokenKey = new stdClass();

current_context()->set($tokenKey, 'secret-token-123');
echo current_context()->find($tokenKey) . "\n"; // "secret-token-123"

// Удаляем чувствительные данные после использования
current_context()->unset($tokenKey);
var_dump(current_context()->find($tokenKey)); // NULL

Пример #3 Удаление не затрагивает родительский контекст

<?php

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

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

spawn(function() {
    // Дочерний контекст видит значение из родителя
    echo current_context()->find('shared') . "\n"; // "parent_value"

    // Устанавливаем локальное значение с тем же ключом
    current_context()->set('shared', 'child_value', replace: true);
    echo current_context()->findLocal('shared') . "\n"; // "child_value"

    // Удаляем локальное значение
    current_context()->unset('shared');

    // После удаления локального — снова видим родительское через find()
    echo current_context()->find('shared') . "\n"; // "parent_value"
    var_dump(current_context()->findLocal('shared')); // NULL
});

Пример #4 Цепочка вызовов с unset

<?php

use function Async\current_context;

current_context()
    ->set('a', 1)
    ->set('b', 2)
    ->set('c', 3);

// Очистка нескольких ключей цепочкой
current_context()
    ->unset('a')
    ->unset('b');

var_dump(current_context()->find('a')); // NULL
var_dump(current_context()->find('b')); // NULL
echo current_context()->find('c') . "\n"; // 3

См. также