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