PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.3
Independent Analytics – WordPress Analytics Plugin v1.3
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.php
independent-analytics / vendor / league / uri / src Last commit date
Exceptions 4 years ago UriTemplate 4 years ago Http.php 4 years ago HttpFactory.php 4 years ago Uri.php 4 years ago UriInfo.php 4 years ago UriResolver.php 4 years ago UriString.php 4 years ago UriTemplate.php 4 years ago
UriTemplate.php
141 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
12 declare(strict_types=1);
13
14 namespace League\Uri;
15
16 use League\Uri\Contracts\UriException;
17 use League\Uri\Contracts\UriInterface;
18 use League\Uri\Exceptions\SyntaxError;
19 use League\Uri\Exceptions\TemplateCanNotBeExpanded;
20 use League\Uri\UriTemplate\Template;
21 use League\Uri\UriTemplate\VariableBag;
22
23 /**
24 * Defines the URI Template syntax and the process for expanding a URI Template into a URI reference.
25 *
26 * @link https://tools.ietf.org/html/rfc6570
27 * @package League\Uri
28 * @author Ignace Nyamagana Butera <nyamsprod@gmail.com>
29 * @since 6.1.0
30 *
31 * Based on GuzzleHttp\UriTemplate class in Guzzle v6.5.
32 * @link https://github.com/guzzle/guzzle/blob/6.5/src/UriTemplate.php
33 */
34 final class UriTemplate
35 {
36 /**
37 * @var Template
38 */
39 private $template;
40
41 /**
42 * @var VariableBag
43 */
44 private $defaultVariables;
45
46 /**
47 * @param object|string $template a string or an object with the __toString method
48 *
49 * @throws \TypeError if the template is not a string or an object with the __toString method
50 * @throws SyntaxError if the template syntax is invalid
51 * @throws TemplateCanNotBeExpanded if the template variables are invalid
52 */
53 public function __construct($template, array $defaultVariables = [])
54 {
55 $this->template = Template::createFromString($template);
56 $this->defaultVariables = $this->filterVariables($defaultVariables);
57 }
58
59 public static function __set_state(array $properties): self
60 {
61 return new self($properties['template']->toString(), $properties['defaultVariables']->all());
62 }
63
64 /**
65 * Filters out variables for the given template.
66 *
67 * @param array<string,string|array<string>> $variables
68 */
69 private function filterVariables(array $variables): VariableBag
70 {
71 $output = new VariableBag();
72 foreach ($this->template->variableNames() as $name) {
73 if (isset($variables[$name])) {
74 $output->assign($name, $variables[$name]);
75 }
76 }
77
78 return $output;
79 }
80
81 /**
82 * The template string.
83 */
84 public function getTemplate(): string
85 {
86 return $this->template->toString();
87 }
88
89 /**
90 * Returns the names of the variables in the template, in order.
91 *
92 * @return string[]
93 */
94 public function getVariableNames(): array
95 {
96 return $this->template->variableNames();
97 }
98
99 /**
100 * Returns the default values used to expand the template.
101 *
102 * The returned list only contains variables whose name is part of the current template.
103 *
104 * @return array<string,string|array>
105 */
106 public function getDefaultVariables(): array
107 {
108 return $this->defaultVariables->all();
109 }
110
111 /**
112 * Returns a new instance with the updated default variables.
113 *
114 * This method MUST retain the state of the current instance, and return
115 * an instance that contains the modified default variables.
116 *
117 * If present, variables whose name is not part of the current template
118 * possible variable names are removed.
119 */
120 public function withDefaultVariables(array $defaultDefaultVariables): self
121 {
122 $clone = clone $this;
123 $clone->defaultVariables = $this->filterVariables($defaultDefaultVariables);
124
125 return $clone;
126 }
127
128 /**
129 * @throws TemplateCanNotBeExpanded if the variable contains nested array values
130 * @throws UriException if the resulting expansion can not be converted to a UriInterface instance
131 */
132 public function expand(array $variables = []): UriInterface
133 {
134 $uriString = $this->template->expand(
135 $this->filterVariables($variables)->replace($this->defaultVariables)
136 );
137
138 return Uri::createFromString($uriString);
139 }
140 }
141