PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6.1
GiveWP – Donation Plugin and Fundraising Platform v4.16.6.1
4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / vendor / vendor-prefixed / stellarwp / licensing-api-client / src / Responses / ValueObjects / CapabilityCollection.php
give / vendor / vendor-prefixed / stellarwp / licensing-api-client / src / Responses / ValueObjects Last commit date
CapabilityCollection.php 3 months ago PageMeta.php 3 months ago PaginationLinks.php 3 months ago
CapabilityCollection.php
107 lines
1 <?php declare(strict_types=1);
2
3 namespace Give\Vendors\LiquidWeb\LicensingApiClient\Responses\ValueObjects;
4
5 use ArrayAccess;
6 use ArrayIterator;
7 use Countable;
8 use IteratorAggregate;
9 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Contracts\Response;
10 use LogicException;
11 use Traversable;
12
13 /**
14 * Immutable ordered set of capability names.
15 *
16 * @implements Response<list<string>>
17 * @implements ArrayAccess<int, string>
18 * @implements IteratorAggregate<int, string>
19 */
20 final class CapabilityCollection implements ArrayAccess, Countable, IteratorAggregate, Response
21 {
22 /**
23 * @var list<string>
24 */
25 private array $items;
26
27 /**
28 * @var array<string, true>
29 */
30 private array $lookup;
31
32 /**
33 * @param list<string> $items
34 */
35 private function __construct(array $items) {
36 $this->items = array_values(array_unique($items));
37 $this->lookup = array_fill_keys($this->items, true);
38 }
39
40 /**
41 * @param array<int, string> $attributes
42 */
43 public static function from(array $attributes): self {
44 return new self(array_values($attributes));
45 }
46
47 public function has(string $capability): bool {
48 return isset($this->lookup[$capability]);
49 }
50
51 public function isEmpty(): bool {
52 return $this->items === [];
53 }
54
55 public function count(): int {
56 return count($this->items);
57 }
58
59 /**
60 * @return ArrayIterator<int, string>
61 */
62 public function getIterator(): Traversable {
63 return new ArrayIterator($this->items);
64 }
65
66 /**
67 * @param string|mixed $offset
68 */
69 public function offsetExists($offset): bool {
70 return is_int($offset) && isset($this->items[$offset]);
71 }
72
73 /**
74 * @param string|mixed $offset
75 */
76 public function offsetGet($offset): ?string {
77 if (! is_int($offset)) {
78 return null;
79 }
80
81 return $this->items[$offset] ?? null;
82 }
83
84 public function toArray(): array {
85 return $this->items;
86 }
87
88 /**
89 * @param string|mixed $offset
90 * @param mixed $value The value to set.
91 *
92 * @throws LogicException
93 */
94 public function offsetSet($offset, $value): void {
95 throw new LogicException('CapabilityCollection is immutable.');
96 }
97
98 /**
99 * @param string|mixed $offset
100 *
101 * @throws LogicException
102 */
103 public function offsetUnset($offset): void {
104 throw new LogicException('CapabilityCollection is immutable.');
105 }
106 }
107