-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathcontext.stub.php
More file actions
81 lines (70 loc) · 2.56 KB
/
Copy pathcontext.stub.php
File metadata and controls
81 lines (70 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
/** @generate-class-entries */
namespace Async;
/**
* Thrown when a mandatory Context key is missing.
*/
class ContextException extends AsyncException {}
/**
* Key-value store owned by a Scope and shared by every coroutine running in it.
*
* find(), get() and has() read this Context first and then the Contexts of the Scopes above it.
* A Scope receives a Context only when someone asks for one, so scopes without a Context are
* skipped rather than ending the search; the search ends at a Scope with no parent, which is the
* main Scope or one created by `new Scope()`. The *Local() forms read this Context alone.
*
* @strict-properties
* @not-serializable
*/
final class Context
{
/**
* Find a value by key in this Context, then in the Contexts of the Scopes above it.
*
* Returns null when no level holds the key. Use get() when the value is mandatory.
*/
public function find(string|object $key): mixed {}
/**
* Get a value by key in this Context, then in the Contexts of the Scopes above it.
*
* Unlike find(), a missing key is an error rather than a null.
*
* @throws ContextException If the key is not found at any level.
*/
public function get(string|object $key): mixed {}
/**
* Check if a key exists in this Context or in the Contexts of the Scopes above it.
*/
public function has(string|object $key): bool {}
/**
* Find a value by key only in the local Context.
*
* Returns null when the key is absent. Use getLocal() when the value is mandatory.
*/
public function findLocal(string|object $key): mixed {}
/**
* Get a value by key only in the local Context.
*
* Unlike findLocal(), a missing key is an error rather than a null.
*
* @throws ContextException If the key is not found in the local Context.
*/
public function getLocal(string|object $key): mixed {}
/**
* Check if a key exists in the local Context.
*/
public function hasLocal(string|object $key): bool {}
/**
* Set a value by key in this Context and return the same Context.
*
* A key already held by this Context is an error unless $replace is true; a key inherited
* from a Scope above does not count as held.
*/
public function set(string|object $key, mixed $value, bool $replace = false): Context {}
/**
* Delete a value by key from this Context and return the same Context.
*
* Keys held by the Scopes above are left alone.
*/
public function unset(string|object $key): Context {}
}