Passed
Push — master ( b083ab...a3db06 )
by Sebastian
03:30
created
src/URLInfo/URIParser.php 1 patch
Indentation   +60 added lines, -60 removed lines patch added patch discarded remove patch
@@ -42,18 +42,18 @@  discard block
 block discarded – undo
42 42
     protected bool $isValid = false;
43 43
     protected bool $encodeUTF = false;
44 44
 
45
-   /**
46
-    * @var array{code:int,message:string}|NULL
47
-    */
45
+    /**
46
+     * @var array{code:int,message:string}|NULL
47
+     */
48 48
     protected ?array $error = null;
49 49
     
50
-   /**
51
-    * Stores a list of all unicode characters in the URL
52
-    * that have been filtered out before parsing it with
53
-    * parse_url.
54
-    * 
55
-    * @var array<string,string>
56
-    */
50
+    /**
51
+     * Stores a list of all unicode characters in the URL
52
+     * that have been filtered out before parsing it with
53
+     * parse_url.
54
+     * 
55
+     * @var array<string,string>
56
+     */
57 57
     protected array $unicodeChars = array();
58 58
 
59 59
     /**
@@ -78,10 +78,10 @@  discard block
 block discarded – undo
78 78
     );
79 79
 
80 80
     /**
81
-    * 
82
-    * @param string $url The target URL.
83
-    * @param bool $encodeUTF Whether to URL encode any plain text unicode characters.
84
-    */
81
+     * 
82
+     * @param string $url The target URL.
83
+     * @param bool $encodeUTF Whether to URL encode any plain text unicode characters.
84
+     */
85 85
     public function __construct(string $url, bool $encodeUTF)
86 86
     {
87 87
         $this->url = $url;
@@ -92,12 +92,12 @@  discard block
 block discarded – undo
92 92
         $this->validate();
93 93
     }
94 94
 
95
-   /**
96
-    * Retrieves the array as parsed by PHP's parse_url,
97
-    * filtered and adjusted as necessary.
98
-    * 
99
-    * @return array
100
-    */
95
+    /**
96
+     * Retrieves the array as parsed by PHP's parse_url,
97
+     * filtered and adjusted as necessary.
98
+     * 
99
+     * @return array
100
+     */
101 101
     public function getInfo() : array
102 102
     {
103 103
         return $this->info;
@@ -119,11 +119,11 @@  discard block
 block discarded – undo
119 119
         }
120 120
     }
121 121
 
122
-   /**
123
-    * Finds any non-url encoded unicode characters in 
124
-    * the URL, and encodes them before the URL is 
125
-    * passed to parse_url.
126
-    */
122
+    /**
123
+     * Finds any non-url encoded unicode characters in 
124
+     * the URL, and encodes them before the URL is 
125
+     * passed to parse_url.
126
+     */
127 127
     protected function filterUnicodeChars() : void
128 128
     {
129 129
         $chars = ConvertHelper::string2array($this->url);
@@ -194,11 +194,11 @@  discard block
 block discarded – undo
194 194
         $this->isValid = true;
195 195
     }
196 196
 
197
-   /**
198
-    * Goes through all information in the parse_url result
199
-    * array, and attempts to fix any user errors in formatting
200
-    * that can be recovered from, mostly regarding stray spaces.
201
-    */
197
+    /**
198
+     * Goes through all information in the parse_url result
199
+     * array, and attempts to fix any user errors in formatting
200
+     * that can be recovered from, mostly regarding stray spaces.
201
+     */
202 202
     protected function filterParsed() : void
203 203
     {
204 204
         $this->info['params'] = array();
@@ -252,13 +252,13 @@  discard block
 block discarded – undo
252 252
         }
253 253
     }
254 254
     
255
-   /**
256
-    * Recursively goes through the array, and converts all previously
257
-    * URL encoded characters with their unicode character counterparts.
258
-    * 
259
-    * @param array $subject
260
-    * @return array
261
-    */
255
+    /**
256
+     * Recursively goes through the array, and converts all previously
257
+     * URL encoded characters with their unicode character counterparts.
258
+     * 
259
+     * @param array $subject
260
+     * @return array
261
+     */
262 262
     protected function restoreUnicodeChars(array $subject) : array
263 263
     {
264 264
         $result = array();
@@ -282,13 +282,13 @@  discard block
 block discarded – undo
282 282
         return $result;
283 283
     }
284 284
     
285
-   /**
286
-    * Replaces all URL encoded unicode characters
287
-    * in the string with the unicode character.
288
-    * 
289
-    * @param string $string
290
-    * @return string
291
-    */
285
+    /**
286
+     * Replaces all URL encoded unicode characters
287
+     * in the string with the unicode character.
288
+     * 
289
+     * @param string $string
290
+     * @return string
291
+     */
292 292
     protected function restoreUnicodeChar(string $string) : string
293 293
     {
294 294
         if(strpos($string, '%') !== false)
@@ -309,32 +309,32 @@  discard block
 block discarded – undo
309 309
         );
310 310
     }
311 311
    
312
-   /**
313
-    * Checks whether the URL that was parsed is valid.
314
-    * @return bool
315
-    */
312
+    /**
313
+     * Checks whether the URL that was parsed is valid.
314
+     * @return bool
315
+     */
316 316
     public function isValid() : bool
317 317
     {
318 318
         return $this->isValid;
319 319
     }
320 320
 
321
-   /**
322
-    * If the validation failed, retrieves the validation
323
-    * error message.
324
-    * 
325
-    * @return string
326
-    */
321
+    /**
322
+     * If the validation failed, retrieves the validation
323
+     * error message.
324
+     * 
325
+     * @return string
326
+     */
327 327
     public function getErrorMessage() : string
328 328
     {
329 329
         return $this->error['message'] ?? '';
330 330
     }
331 331
     
332
-   /**
333
-    * If the validation failed, retrieves the validation
334
-    * error code.
335
-    * 
336
-    * @return int
337
-    */
332
+    /**
333
+     * If the validation failed, retrieves the validation
334
+     * error code.
335
+     * 
336
+     * @return int
337
+     */
338 338
     public function getErrorCode() : int
339 339
     {
340 340
         return $this->error['code'] ?? -1;
Please login to merge, or discard this patch.
src/URLInfo.php 1 patch
Indentation   +184 added lines, -184 removed lines patch added patch discarded remove patch
@@ -44,42 +44,42 @@  discard block
 block discarded – undo
44 44
     public const TYPE_URL = 'url';
45 45
     public const TYPE_NONE = 'none';
46 46
 
47
-   /**
48
-    * The original URL that was passed to the constructor.
49
-    * @var string
50
-    */
47
+    /**
48
+     * The original URL that was passed to the constructor.
49
+     * @var string
50
+     */
51 51
     protected string $rawURL;
52 52
 
53
-   /**
54
-    * @var array<string,mixed>
55
-    */
53
+    /**
54
+     * @var array<string,mixed>
55
+     */
56 56
     protected array $info;
57 57
     
58
-   /**
59
-    * @var string[]
60
-    */
58
+    /**
59
+     * @var string[]
60
+     */
61 61
     protected array $excludedParams = array();
62 62
     
63
-   /**
64
-    * @var bool
65
-    * @see URLInfo::setParamExclusion()
66
-    */
63
+    /**
64
+     * @var bool
65
+     * @see URLInfo::setParamExclusion()
66
+     */
67 67
     protected bool $paramExclusion = false;
68 68
     
69
-   /**
70
-    * @var array<string,string>|NULL
71
-    * @see URLInfo::getTypeLabel()
72
-    */
69
+    /**
70
+     * @var array<string,string>|NULL
71
+     * @see URLInfo::getTypeLabel()
72
+     */
73 73
     protected static ?array $typeLabels = null;
74 74
     
75
-   /**
76
-    * @var bool
77
-    */
75
+    /**
76
+     * @var bool
77
+     */
78 78
     protected bool $highlightExcluded = false;
79 79
     
80
-   /**
81
-    * @var string[]
82
-    */
80
+    /**
81
+     * @var string[]
82
+     */
83 83
     protected array $infoKeys = array(
84 84
         'scheme',
85 85
         'host',
@@ -91,24 +91,24 @@  discard block
 block discarded – undo
91 91
         'fragment'
92 92
     );
93 93
     
94
-   /**
95
-    * @var string
96
-    */
94
+    /**
95
+     * @var string
96
+     */
97 97
     protected string $url;
98 98
     
99
-   /**
100
-    * @var URIParser
101
-    */
99
+    /**
100
+     * @var URIParser
101
+     */
102 102
     protected URIParser $parser;
103 103
     
104
-   /**
105
-    * @var URINormalizer|NULL
106
-    */
104
+    /**
105
+     * @var URINormalizer|NULL
106
+     */
107 107
     protected ?URINormalizer $normalizer = null;
108 108
     
109
-   /**
110
-    * @var bool
111
-    */
109
+    /**
110
+     * @var bool
111
+     */
112 112
     protected bool $encodeUTFChars = false;
113 113
     
114 114
     public function __construct(string $url)
@@ -125,14 +125,14 @@  discard block
 block discarded – undo
125 125
         $this->info = $this->parser->getInfo();
126 126
     }
127 127
 
128
-   /**
129
-    * Whether to URL encode any non-encoded UTF8 characters in the URL.
130
-    * Default is to leave them as-is for better readability, since 
131
-    * browsers handle this well.
132
-    * 
133
-    * @param bool $enabled
134
-    * @return URLInfo
135
-    */
128
+    /**
129
+     * Whether to URL encode any non-encoded UTF8 characters in the URL.
130
+     * Default is to leave them as-is for better readability, since 
131
+     * browsers handle this well.
132
+     * 
133
+     * @param bool $enabled
134
+     * @return URLInfo
135
+     */
136 136
     public function setUTFEncoding(bool $enabled=true) : URLInfo
137 137
     {
138 138
         if($this->encodeUTFChars !== $enabled)
@@ -149,13 +149,13 @@  discard block
 block discarded – undo
149 149
         return $this->encodeUTFChars;
150 150
     }
151 151
     
152
-   /**
153
-    * Filters a URL: removes control characters and the
154
-    * like to have a clean URL to work with.
155
-    * 
156
-    * @param string $url
157
-    * @return string
158
-    */
152
+    /**
153
+     * Filters a URL: removes control characters and the
154
+     * like to have a clean URL to work with.
155
+     * 
156
+     * @param string $url
157
+     * @return string
158
+     */
159 159
     public static function filterURL(string $url) : string
160 160
     {
161 161
         return URIFilter::filter($url);
@@ -185,12 +185,12 @@  discard block
 block discarded – undo
185 185
         return $this->info['type'] === self::TYPE_PHONE;
186 186
     }
187 187
     
188
-   /**
189
-    * Whether the URL is a regular URL, not one of the 
190
-    * other types like a phone number or email address.
191
-    * 
192
-    * @return bool
193
-    */
188
+    /**
189
+     * Whether the URL is a regular URL, not one of the 
190
+     * other types like a phone number or email address.
191
+     * 
192
+     * @return bool
193
+     */
194 194
     public function isURL() : bool
195 195
     {
196 196
         $host = $this->getHost();
@@ -202,20 +202,20 @@  discard block
 block discarded – undo
202 202
         return $this->parser->isValid();
203 203
     }
204 204
     
205
-   /**
206
-    * Retrieves the host name, or an empty string if none is present.
207
-    * 
208
-    * @return string
209
-    */
205
+    /**
206
+     * Retrieves the host name, or an empty string if none is present.
207
+     * 
208
+     * @return string
209
+     */
210 210
     public function getHost() : string
211 211
     {
212 212
         return $this->getInfoKey('host');
213 213
     }
214 214
     
215
-   /**
216
-    * Retrieves the path, or an empty string if none is present.
217
-    * @return string
218
-    */
215
+    /**
216
+     * Retrieves the path, or an empty string if none is present.
217
+     * @return string
218
+     */
219 219
     public function getPath() : string
220 220
     {
221 221
         return $this->getInfoKey('path');
@@ -231,10 +231,10 @@  discard block
 block discarded – undo
231 231
         return $this->getInfoKey('scheme');
232 232
     }
233 233
     
234
-   /**
235
-    * Retrieves the port specified in the URL, or -1 if none is present.
236
-    * @return int
237
-    */
234
+    /**
235
+     * Retrieves the port specified in the URL, or -1 if none is present.
236
+     * @return int
237
+     */
238 238
     public function getPort() : int
239 239
     {
240 240
         $port = $this->getInfoKey('port');
@@ -246,13 +246,13 @@  discard block
 block discarded – undo
246 246
         return -1;
247 247
     }
248 248
     
249
-   /**
250
-    * Retrieves the raw query string, or an empty string if none is present.
251
-    * 
252
-    * @return string
253
-    * 
254
-    * @see URLInfo::getParams()
255
-    */
249
+    /**
250
+     * Retrieves the raw query string, or an empty string if none is present.
251
+     * 
252
+     * @return string
253
+     * 
254
+     * @see URLInfo::getParams()
255
+     */
256 256
     public function getQuery() : string
257 257
     {
258 258
         return $this->getInfoKey('query');
@@ -268,20 +268,20 @@  discard block
 block discarded – undo
268 268
         return $this->getInfoKey('pass');
269 269
     }
270 270
     
271
-   /**
272
-    * Whether the URL contains a port number.
273
-    * @return bool
274
-    */
271
+    /**
272
+     * Whether the URL contains a port number.
273
+     * @return bool
274
+     */
275 275
     public function hasPort() : bool
276 276
     {
277 277
         return $this->getPort() !== -1;
278 278
     }
279 279
     
280
-   /**
281
-    * Alias for the hasParams() method.
282
-    * @return bool
283
-    * @see URLInfo::hasParams()
284
-    */
280
+    /**
281
+     * Alias for the hasParams() method.
282
+     * @return bool
283
+     * @see URLInfo::hasParams()
284
+     */
285 285
     public function hasQuery() : bool
286 286
     {
287 287
         return $this->hasParams();
@@ -326,23 +326,23 @@  discard block
 block discarded – undo
326 326
         return '';
327 327
     }
328 328
 
329
-   /**
330
-    * Retrieves a normalized URL: this ensures that all parameters
331
-    * in the URL are always in the same order.
332
-    * 
333
-    * @return string
334
-    */
329
+    /**
330
+     * Retrieves a normalized URL: this ensures that all parameters
331
+     * in the URL are always in the same order.
332
+     * 
333
+     * @return string
334
+     */
335 335
     public function getNormalized() : string
336 336
     {
337 337
         return $this->normalize();
338 338
     }
339 339
     
340
-   /**
341
-    * Like getNormalized(), but if a username and password are present
342
-    * in the URL, returns the URL without them.
343
-    * 
344
-    * @return string
345
-    */
340
+    /**
341
+     * Like getNormalized(), but if a username and password are present
342
+     * in the URL, returns the URL without them.
343
+     * 
344
+     * @return string
345
+     */
346 346
     public function getNormalizedWithoutAuth() : string
347 347
     {
348 348
         return $this->normalize(false);
@@ -363,25 +363,25 @@  discard block
 block discarded – undo
363 363
         return $this->normalizer->normalize();
364 364
     }
365 365
     
366
-   /**
367
-    * Creates a hash of the URL, which can be used for comparisons.
368
-    * Since any parameters in the URL's query are sorted alphabetically,
369
-    * the same links with a different parameter order will have the 
370
-    * same hash.
371
-    * 
372
-    * @return string
373
-    */
366
+    /**
367
+     * Creates a hash of the URL, which can be used for comparisons.
368
+     * Since any parameters in the URL's query are sorted alphabetically,
369
+     * the same links with a different parameter order will have the 
370
+     * same hash.
371
+     * 
372
+     * @return string
373
+     */
374 374
     public function getHash() : string
375 375
     {
376 376
         return ConvertHelper::string2shortHash($this->getNormalized());
377 377
     }
378 378
 
379
-   /**
380
-    * Highlights the URL using HTML tags with specific highlighting
381
-    * class names.
382
-    * 
383
-    * @return string Will return an empty string if the URL is not valid.
384
-    */
379
+    /**
380
+     * Highlights the URL using HTML tags with specific highlighting
381
+     * class names.
382
+     * 
383
+     * @return string Will return an empty string if the URL is not valid.
384
+     */
385 385
     public function getHighlighted() : string
386 386
     {
387 387
         if(!$this->isValid()) {
@@ -413,15 +413,15 @@  discard block
 block discarded – undo
413 413
         return count($params);
414 414
     }
415 415
     
416
-   /**
417
-    * Retrieves all parameters specified in the url,
418
-    * if any, as an associative array. 
419
-    * 
420
-    * NOTE: Ignores parameters that have been added
421
-    * to the excluded parameters list.
422
-    *
423
-    * @return array<string,string>
424
-    */
416
+    /**
417
+     * Retrieves all parameters specified in the url,
418
+     * if any, as an associative array. 
419
+     * 
420
+     * NOTE: Ignores parameters that have been added
421
+     * to the excluded parameters list.
422
+     *
423
+     * @return array<string,string>
424
+     */
425 425
     public function getParams() : array
426 426
     {
427 427
         if(!$this->paramExclusion || empty($this->excludedParams)) {
@@ -439,37 +439,37 @@  discard block
 block discarded – undo
439 439
         return $keep;
440 440
     }
441 441
     
442
-   /**
443
-    * Retrieves the names of all parameters present in the URL, if any.
444
-    * @return string[]
445
-    */
442
+    /**
443
+     * Retrieves the names of all parameters present in the URL, if any.
444
+     * @return string[]
445
+     */
446 446
     public function getParamNames() : array
447 447
     {
448 448
         $params = $this->getParams();
449 449
         return array_keys($params);
450 450
     }
451 451
     
452
-   /**
453
-    * Retrieves a specific parameter value from the URL.
454
-    * 
455
-    * @param string $name
456
-    * @return string The parameter value, or an empty string if it does not exist.
457
-    */
452
+    /**
453
+     * Retrieves a specific parameter value from the URL.
454
+     * 
455
+     * @param string $name
456
+     * @return string The parameter value, or an empty string if it does not exist.
457
+     */
458 458
     public function getParam(string $name) : string
459 459
     {
460 460
         return $this->info['params'][$name] ?? '';
461 461
     }
462 462
     
463
-   /**
464
-    * Excludes a URL parameter entirely if present:
465
-    * the parser will act as if the parameter was not
466
-    * even present in the source URL, effectively
467
-    * stripping it.
468
-    *
469
-    * @param string $name
470
-    * @param string $reason A human-readable explanation why this is excluded - used when highlighting links.
471
-    * @return URLInfo
472
-    */
463
+    /**
464
+     * Excludes a URL parameter entirely if present:
465
+     * the parser will act as if the parameter was not
466
+     * even present in the source URL, effectively
467
+     * stripping it.
468
+     *
469
+     * @param string $name
470
+     * @param string $reason A human-readable explanation why this is excluded - used when highlighting links.
471
+     * @return URLInfo
472
+     */
473 473
     public function excludeParam(string $name, string $reason='') : URLInfo
474 474
     {
475 475
         if(!isset($this->excludedParams[$name]))
@@ -522,14 +522,14 @@  discard block
 block discarded – undo
522 522
         return self::$typeLabels[$this->getType()];
523 523
     }
524 524
 
525
-   /**
526
-    * Whether excluded parameters should be highlighted in
527
-    * a different color in the URL when using the
528
-    * {@link URLInfo::getHighlighted()} method.
529
-    *
530
-    * @param bool $highlight
531
-    * @return URLInfo
532
-    */
525
+    /**
526
+     * Whether excluded parameters should be highlighted in
527
+     * a different color in the URL when using the
528
+     * {@link URLInfo::getHighlighted()} method.
529
+     *
530
+     * @param bool $highlight
531
+     * @return URLInfo
532
+     */
533 533
     public function setHighlightExcluded(bool $highlight=true) : URLInfo
534 534
     {
535 535
         $this->highlightExcluded = $highlight;
@@ -585,24 +585,24 @@  discard block
 block discarded – undo
585 585
         return $this;
586 586
     }
587 587
     
588
-   /**
589
-    * Whether the parameter exclusion mode is enabled:
590
-    * In this case, if any parameters have been added to the
591
-    * exclusion list, all relevant methods will exclude these.
592
-    *
593
-    * @return bool
594
-    */
588
+    /**
589
+     * Whether the parameter exclusion mode is enabled:
590
+     * In this case, if any parameters have been added to the
591
+     * exclusion list, all relevant methods will exclude these.
592
+     *
593
+     * @return bool
594
+     */
595 595
     public function isParamExclusionEnabled() : bool
596 596
     {
597 597
         return $this->paramExclusion;
598 598
     }
599 599
     
600
-   /**
601
-    * Checks whether the link contains any parameters that
602
-    * are on the list of excluded parameters.
603
-    *
604
-    * @return bool
605
-    */
600
+    /**
601
+     * Checks whether the link contains any parameters that
602
+     * are on the list of excluded parameters.
603
+     *
604
+     * @return bool
605
+     */
606 606
     public function containsExcludedParams() : bool
607 607
     {
608 608
         if(empty($this->excludedParams)) {
@@ -690,26 +690,26 @@  discard block
 block discarded – undo
690 690
             ->canConnect();
691 691
     }
692 692
     
693
-   /**
694
-    * Creates the connection tester instance that is used
695
-    * to check if a URL can be connected to, and which is
696
-    * used in the {@see URLInfo::tryConnect()} method. It
697
-    * allows more settings to be used.
698
-    * 
699
-    * @return URIConnectionTester
700
-    */
693
+    /**
694
+     * Creates the connection tester instance that is used
695
+     * to check if a URL can be connected to, and which is
696
+     * used in the {@see URLInfo::tryConnect()} method. It
697
+     * allows more settings to be used.
698
+     * 
699
+     * @return URIConnectionTester
700
+     */
701 701
     public function createConnectionTester() : URIConnectionTester
702 702
     {
703 703
         return new URIConnectionTester($this);
704 704
     }
705 705
     
706
-   /**
707
-    * Adds/overwrites a URL parameter.
708
-    *  
709
-    * @param string $name
710
-    * @param string $val
711
-    * @return URLInfo
712
-    */
706
+    /**
707
+     * Adds/overwrites a URL parameter.
708
+     *  
709
+     * @param string $name
710
+     * @param string $val
711
+     * @return URLInfo
712
+     */
713 713
     public function setParam(string $name, string $val) : URLInfo
714 714
     {
715 715
         $this->info['params'][$name] = $val;
@@ -717,13 +717,13 @@  discard block
 block discarded – undo
717 717
         return $this;
718 718
     }
719 719
     
720
-   /**
721
-    * Removes a URL parameter. Has no effect if the
722
-    * parameter is not present to begin with.
723
-    * 
724
-    * @param string $param
725
-    * @return URLInfo
726
-    */
720
+    /**
721
+     * Removes a URL parameter. Has no effect if the
722
+     * parameter is not present to begin with.
723
+     * 
724
+     * @param string $param
725
+     * @return URLInfo
726
+     */
727 727
     public function removeParam(string $param) : URLInfo
728 728
     {
729 729
         if(isset($this->info['params'][$param]))
Please login to merge, or discard this patch.