PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.4
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.4
4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / vendor / guzzlehttp / psr7 / src / Query.php
surecart / vendor / guzzlehttp / psr7 / src Last commit date
Exception 1 year ago AppendStream.php 1 year ago BufferStream.php 1 year ago CachingStream.php 1 year ago DroppingStream.php 1 year ago FnStream.php 1 year ago Header.php 1 year ago HttpFactory.php 1 year ago InflateStream.php 1 year ago LazyOpenStream.php 1 year ago LimitStream.php 1 year ago Message.php 1 year ago MessageTrait.php 1 year ago MimeType.php 1 year ago MultipartStream.php 1 year ago NoSeekStream.php 1 year ago PumpStream.php 1 year ago Query.php 1 year ago Request.php 1 year ago Response.php 1 year ago Rfc7230.php 1 year ago ServerRequest.php 1 year ago Stream.php 1 year ago StreamDecoratorTrait.php 1 year ago StreamWrapper.php 1 year ago UploadedFile.php 1 year ago Uri.php 1 year ago UriComparator.php 1 year ago UriNormalizer.php 1 year ago UriResolver.php 1 year ago Utils.php 1 year ago
Query.php
119 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace SureCartVendors\GuzzleHttp\Psr7;
6
7 final class Query
8 {
9 /**
10 * Parse a query string into an associative array.
11 *
12 * If multiple values are found for the same key, the value of that key
13 * value pair will become an array. This function does not parse nested
14 * PHP style arrays into an associative array (e.g., `foo[a]=1&foo[b]=2`
15 * will be parsed into `['foo[a]' => '1', 'foo[b]' => '2'])`.
16 *
17 * @param string $str Query string to parse
18 * @param int|bool $urlEncoding How the query string is encoded
19 */
20 public static function parse(string $str, $urlEncoding = true): array
21 {
22 $result = [];
23
24 if ($str === '') {
25 return $result;
26 }
27
28 if ($urlEncoding === true) {
29 $decoder = function ($value) {
30 return rawurldecode(str_replace('+', ' ', (string) $value));
31 };
32 } elseif ($urlEncoding === PHP_QUERY_RFC3986) {
33 $decoder = 'rawurldecode';
34 } elseif ($urlEncoding === PHP_QUERY_RFC1738) {
35 $decoder = 'urldecode';
36 } else {
37 $decoder = function ($str) {
38 return $str;
39 };
40 }
41
42 foreach (explode('&', $str) as $kvp) {
43 $parts = explode('=', $kvp, 2);
44 $key = $decoder($parts[0]);
45 $value = isset($parts[1]) ? $decoder($parts[1]) : null;
46 if (!array_key_exists($key, $result)) {
47 $result[$key] = $value;
48 } else {
49 if (!is_array($result[$key])) {
50 $result[$key] = [$result[$key]];
51 }
52 $result[$key][] = $value;
53 }
54 }
55
56 return $result;
57 }
58
59 /**
60 * Build a query string from an array of key value pairs.
61 *
62 * This function can use the return value of `parse()` to build a query
63 * string. This function does not modify the provided keys when an array is
64 * encountered (like `http_build_query()` would).
65 *
66 * @param array $params Query string parameters.
67 * @param int|false $encoding Set to false to not encode,
68 * PHP_QUERY_RFC3986 to encode using
69 * RFC3986, or PHP_QUERY_RFC1738 to
70 * encode using RFC1738.
71 * @param bool $treatBoolsAsInts Set to true to encode as 0/1, and
72 * false as false/true.
73 */
74 public static function build(array $params, $encoding = PHP_QUERY_RFC3986, bool $treatBoolsAsInts = true): string
75 {
76 if (!$params) {
77 return '';
78 }
79
80 if ($encoding === false) {
81 $encoder = function (string $str): string {
82 return $str;
83 };
84 } elseif ($encoding === PHP_QUERY_RFC3986) {
85 $encoder = 'rawurlencode';
86 } elseif ($encoding === PHP_QUERY_RFC1738) {
87 $encoder = 'urlencode';
88 } else {
89 throw new \InvalidArgumentException('Invalid type');
90 }
91
92 $castBool = $treatBoolsAsInts ? static function ($v) { return (int) $v; } : static function ($v) { return $v ? 'true' : 'false'; };
93
94 $qs = '';
95 foreach ($params as $k => $v) {
96 $k = $encoder((string) $k);
97 if (!is_array($v)) {
98 $qs .= $k;
99 $v = is_bool($v) ? $castBool($v) : $v;
100 if ($v !== null) {
101 $qs .= '='.$encoder((string) $v);
102 }
103 $qs .= '&';
104 } else {
105 foreach ($v as $vv) {
106 $qs .= $k;
107 $vv = is_bool($vv) ? $castBool($vv) : $vv;
108 if ($vv !== null) {
109 $qs .= '='.$encoder((string) $vv);
110 }
111 $qs .= '&';
112 }
113 }
114 }
115
116 return $qs ? (string) substr($qs, 0, -1) : '';
117 }
118 }
119