PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / illuminate / support / NamespacedItemResolver.php
independent-analytics / vendor / illuminate / support Last commit date
Exceptions 1 month ago Facades 1 month ago Testing 1 month ago Traits 1 month ago AggregateServiceProvider.php 2 years ago Benchmark.php 1 month ago Carbon.php 1 month ago Composer.php 1 month ago ConfigurationUrlParser.php 1 month ago DateFactory.php 1 month ago Env.php 1 month ago Fluent.php 1 month ago HigherOrderTapProxy.php 2 years ago HtmlString.php 2 years ago InteractsWithTime.php 2 years ago Js.php 1 month ago Lottery.php 1 month ago Manager.php 2 years ago MessageBag.php 1 month ago MultipleInstanceManager.php 1 month ago NamespacedItemResolver.php 1 month ago Optional.php 1 month ago Pluralizer.php 1 month ago ProcessUtils.php 1 month ago Reflector.php 1 month ago ServiceProvider.php 2 years ago Str.php 1 month ago Stringable.php 1 month ago Timebox.php 1 month ago ValidatedInput.php 1 month ago ViewErrorBag.php 1 month ago helpers.php 1 month ago
NamespacedItemResolver.php
97 lines
1 <?php
2
3 namespace IAWPSCOPED\Illuminate\Support;
4
5 /** @internal */
6 class NamespacedItemResolver
7 {
8 /**
9 * A cache of the parsed items.
10 *
11 * @var array
12 */
13 protected $parsed = [];
14 /**
15 * Parse a key into namespace, group, and item.
16 *
17 * @param string $key
18 * @return array
19 */
20 public function parseKey($key)
21 {
22 // If we've already parsed the given key, we'll return the cached version we
23 // already have, as this will save us some processing. We cache off every
24 // key we parse so we can quickly return it on all subsequent requests.
25 if (isset($this->parsed[$key])) {
26 return $this->parsed[$key];
27 }
28 // If the key does not contain a double colon, it means the key is not in a
29 // namespace, and is just a regular configuration item. Namespaces are a
30 // tool for organizing configuration items for things such as modules.
31 if (!\str_contains($key, '::')) {
32 $segments = \explode('.', $key);
33 $parsed = $this->parseBasicSegments($segments);
34 } else {
35 $parsed = $this->parseNamespacedSegments($key);
36 }
37 // Once we have the parsed array of this key's elements, such as its groups
38 // and namespace, we will cache each array inside a simple list that has
39 // the key and the parsed array for quick look-ups for later requests.
40 return $this->parsed[$key] = $parsed;
41 }
42 /**
43 * Parse an array of basic segments.
44 *
45 * @param array $segments
46 * @return array
47 */
48 protected function parseBasicSegments(array $segments)
49 {
50 // The first segment in a basic array will always be the group, so we can go
51 // ahead and grab that segment. If there is only one total segment we are
52 // just pulling an entire group out of the array and not a single item.
53 $group = $segments[0];
54 // If there is more than one segment in this group, it means we are pulling
55 // a specific item out of a group and will need to return this item name
56 // as well as the group so we know which item to pull from the arrays.
57 $item = \count($segments) === 1 ? null : \implode('.', \array_slice($segments, 1));
58 return [null, $group, $item];
59 }
60 /**
61 * Parse an array of namespaced segments.
62 *
63 * @param string $key
64 * @return array
65 */
66 protected function parseNamespacedSegments($key)
67 {
68 [$namespace, $item] = \explode('::', $key);
69 // First we'll just explode the first segment to get the namespace and group
70 // since the item should be in the remaining segments. Once we have these
71 // two pieces of data we can proceed with parsing out the item's value.
72 $itemSegments = \explode('.', $item);
73 $groupAndItem = \array_slice($this->parseBasicSegments($itemSegments), 1);
74 return \array_merge([$namespace], $groupAndItem);
75 }
76 /**
77 * Set the parsed value of a key.
78 *
79 * @param string $key
80 * @param array $parsed
81 * @return void
82 */
83 public function setParsedKey($key, $parsed)
84 {
85 $this->parsed[$key] = $parsed;
86 }
87 /**
88 * Flush the cache of parsed keys.
89 *
90 * @return void
91 */
92 public function flushParsedKeys()
93 {
94 $this->parsed = [];
95 }
96 }
97