PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.18
Independent Analytics – WordPress Analytics Plugin v1.18
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 3 years ago Template.php 3 years ago VarSpecifier.php 3 years ago VariableBag.php 3 years 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 IAWP\League\Uri\UriTemplate;
13
14 use IAWP\League\Uri\Exceptions\TemplateCanNotBeExpanded;
15 use function gettype;
16 use function is_array;
17 use function is_bool;
18 use function is_object;
19 use function is_scalar;
20 use function method_exists;
21 use function sprintf;
22 final class VariableBag
23 {
24 /**
25 * @var array<string,string|array<string>>
26 */
27 private $variables = [];
28 /**
29 * @param iterable<string,mixed> $variables
30 */
31 public function __construct(iterable $variables = [])
32 {
33 foreach ($variables as $name => $value) {
34 $this->assign($name, $value);
35 }
36 }
37 public static function __set_state(array $properties) : self
38 {
39 return new self($properties['variables']);
40 }
41 /**
42 * @return array<string,string|array<string>>
43 */
44 public function all() : array
45 {
46 return $this->variables;
47 }
48 /**
49 * Fetches the variable value if none found returns null.
50 *
51 * @return null|string|array<string>
52 */
53 public function fetch(string $name)
54 {
55 return $this->variables[$name] ?? null;
56 }
57 /**
58 * @param string|array<string> $value
59 */
60 public function assign(string $name, $value) : void
61 {
62 $this->variables[$name] = $this->normalizeValue($value, $name, \true);
63 }
64 /**
65 * @param mixed $value the value to be expanded
66 *
67 * @throws TemplateCanNotBeExpanded if the value contains nested list
68 *
69 * @return string|array<string>
70 */
71 private function normalizeValue($value, string $name, bool $isNestedListAllowed)
72 {
73 if (is_bool($value)) {
74 return \true === $value ? '1' : '0';
75 }
76 if (null === $value || is_scalar($value) || is_object($value) && method_exists($value, '__toString')) {
77 return (string) $value;
78 }
79 if (!is_array($value)) {
80 throw new \TypeError(sprintf('The variable ' . $name . ' must be NULL, a scalar or a stringable object `%s` given', gettype($value)));
81 }
82 if (!$isNestedListAllowed) {
83 throw TemplateCanNotBeExpanded::dueToNestedListOfValue($name);
84 }
85 foreach ($value as &$var) {
86 $var = self::normalizeValue($var, $name, \false);
87 }
88 unset($var);
89 return $value;
90 }
91 /**
92 * Replaces elements from passed variables into the current instance.
93 */
94 public function replace(VariableBag $variables) : self
95 {
96 $instance = clone $this;
97 $instance->variables += $variables->variables;
98 return $instance;
99 }
100 }
101