PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.4
Independent Analytics – WordPress Analytics Plugin v2.15.4
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 / league / uri / src / UriTemplate / VariableBag.php
independent-analytics / vendor / league / uri / src / UriTemplate Last commit date
Expression.php 1 month ago Template.php 1 month ago VarSpecifier.php 1 month ago VariableBag.php 1 month ago
VariableBag.php
101 lines
1 <?php
2
3 /**
4 * League.Uri (https://uri.thephpleague.com)
5 *
6 * (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 declare (strict_types=1);
12 namespace IAWPSCOPED\League\Uri\UriTemplate;
13
14 use IAWPSCOPED\League\Uri\Exceptions\TemplateCanNotBeExpanded;
15 use TypeError;
16 use function gettype;
17 use function is_array;
18 use function is_bool;
19 use function is_object;
20 use function is_scalar;
21 use function method_exists;
22 use function sprintf;
23 /** @internal */
24 final class VariableBag
25 {
26 /**
27 * @var array<string,string|array<string>>
28 */
29 private array $variables = [];
30 /**
31 * @param iterable<string,string|bool|int|float|array<string|bool|int|float>> $variables
32 */
33 public function __construct(iterable $variables = [])
34 {
35 foreach ($variables as $name => $value) {
36 $this->assign($name, $value);
37 }
38 }
39 public static function __set_state(array $properties) : self
40 {
41 return new self($properties['variables']);
42 }
43 /**
44 * @return array<string,string|array<string>>
45 */
46 public function all() : array
47 {
48 return $this->variables;
49 }
50 /**
51 * Fetches the variable value if none found returns null.
52 *
53 * @return null|string|array<string>
54 */
55 public function fetch(string $name)
56 {
57 return $this->variables[$name] ?? null;
58 }
59 /**
60 * @param string|bool|int|float|array<string|bool|int|float> $value
61 */
62 public function assign(string $name, $value) : void
63 {
64 $this->variables[$name] = $this->normalizeValue($value, $name, \true);
65 }
66 /**
67 * @param mixed $value the value to be expanded
68 *
69 * @throws TemplateCanNotBeExpanded if the value contains nested list
70 *
71 * @return string|array<string>
72 */
73 private function normalizeValue($value, string $name, bool $isNestedListAllowed)
74 {
75 if (is_bool($value)) {
76 return \true === $value ? '1' : '0';
77 }
78 if (null === $value || is_scalar($value) || is_object($value) && method_exists($value, '__toString')) {
79 return (string) $value;
80 }
81 if (!is_array($value)) {
82 throw new TypeError(sprintf('The variable ' . $name . ' must be NULL, a scalar or a stringable object `%s` given', gettype($value)));
83 }
84 if (!$isNestedListAllowed) {
85 throw TemplateCanNotBeExpanded::dueToNestedListOfValue($name);
86 }
87 foreach ($value as &$var) {
88 $var = self::normalizeValue($var, $name, \false);
89 }
90 unset($var);
91 return $value;
92 }
93 /**
94 * Replaces elements from passed variables into the current instance.
95 */
96 public function replace(VariableBag $variables) : self
97 {
98 return new self($this->variables + $variables->variables);
99 }
100 }
101