Skip to content

Commit

Permalink
url
Browse files Browse the repository at this point in the history
  • Loading branch information
dg committed Jan 12, 2025
1 parent 58c3418 commit 1ea5cb5
Showing 1 changed file with 50 additions and 20 deletions.
70 changes: 50 additions & 20 deletions http/cs/urls.texy
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,17 @@ $url = new Url(
);
```

Třída `Url` implementuje rozhraní `JsonSerializable` a má metodu `__toString()`, takže objekt lze vypsat nebo použít v datech předávaných do `json_encode()`.

```php
echo $url;
echo json_encode([$url]);
```


Komponenty URL .[method]
------------------------

Pro vrácení nebo změnu jednotlivých komponent URL jsou vám k dispozici tyto metody:

.[language-php]
Expand Down Expand Up @@ -72,7 +83,10 @@ Můžeme pracovat i s jednotlivými query parametry pomocí:
| `setQuery(string\|array $query)` | `getQueryParameters(): array`
| `setQueryParameter(string $name, $val)` | `getQueryParameter(string $name)`

Metoda `getDomain(int $level = 2)` vrací pravou či levou část hostitele. Takto funguje, pokud host je `www.nette.org`:

getDomain(int $level = 2): string .[method]
-------------------------------------------
Vrací pravou či levou část hostitele. Takto funguje, pokud host je `www.nette.org`:

.[language-php]
| `getDomain(1)` | `'org'`
Expand All @@ -84,27 +98,28 @@ Metoda `getDomain(int $level = 2)` vrací pravou či levou část hostitele. Tak
| `getDomain(-3)` | `''`


Třída `Url` implementuje rozhraní `JsonSerializable` a má metodu `__toString()`, takže objekt lze vypsat nebo použít v datech předávaných do `json_encode()`.

```php
echo $url;
echo json_encode([$url]);
```

Metoda `isEqual(string|Url $anotherUrl): bool` ověří, zda jsou dvě URL shodné.
isEqual(string|Url $anotherUrl): bool .[method]
-----------------------------------------------
Ověří, zda jsou dvě URL shodné.

```php
$url->isEqual('https://nette.org');
```

Statická metoda `isAbsolute(string $url): bool` ověřuje, zda je URL absolutní. URL je považována za absolutní, pokud začíná schématem (např. http, https, ftp) následovaným dvojtečkou.

Url::isAbsolute(string $url): bool .[method]{data-version:3.3.2}
-----------------------------------------------------------------
Ověřuje, zda je URL absolutní. URL je považována za absolutní, pokud začíná schématem (např. http, https, ftp) následovaným dvojtečkou.

```php
Url::isAbsolute('https://nette.org'); // true
Url::isAbsolute('//nette.org'); // false
```

Statická metoda `removeDotSegments(string $path): string` normalizuje cestu v URL odstraněním speciálních segmentů `.` a `..`. Metoda zpracovává relativní odkazy a odstraňuje nadbytečné prvky cesty stejným způsobem, jako to dělají webové prohlížeče.

Url::removeDotSegments(string $path): string .[method]{data-version:3.3.2}
--------------------------------------------------------------------------
Normalizuje cestu v URL odstraněním speciálních segmentů `.` a `..`. Metoda zpracovává relativní odkazy a odstraňuje nadbytečné prvky cesty stejným způsobem, jako to dělají webové prohlížeče.

```php
Url::removeDotSegments('/path/../subtree/./file.txt'); // '/subtree/file.txt'
Expand Down Expand Up @@ -133,6 +148,17 @@ $newUrl = $url
echo $newUrl; // 'http://nette.org:8080/cs/?name=param#footer'
```

Třída `UrlImmutable` implementuje rozhraní `JsonSerializable` a má metodu `__toString()`, takže objekt lze vypsat nebo použít v datech předávaných do `json_encode()`.

```php
echo $url;
echo json_encode([$url]);
```


Komponenty URL .[method]
------------------------

Pro vrácení nebo změnu jednotlivých komponent URL slouží metody:

.[language-php]
Expand All @@ -151,6 +177,8 @@ Pro vrácení nebo změnu jednotlivých komponent URL slouží metody:
| | `getHostUrl(): string` | `'http://nette.org:8080'`
| | `getAbsoluteUrl(): string` | celá URL

Metoda `withoutUserInfo()` odstraňuje `user` a `password`.

Můžeme pracovat i s jednotlivými query parametry pomocí:

.[language-php]
Expand All @@ -159,9 +187,15 @@ Můžeme pracovat i s jednotlivými query parametry pomocí:
| `withQuery(string\|array $query)` | `getQueryParameters(): array`
| `withQueryParameter(string $name, $val)` | `getQueryParameter(string $name)`

Metoda `getDomain(int $level = 2)` funguje stejně, jako její jmenovkyně ze třídy `Url`. Metoda `withoutUserInfo()` odstraňuje `user` a `password`.

Metoda `resolve(string $reference): self` odvozuje absolutní URL stejným způsobem, jakým prohlížeč zpracovává odkazy (`<a href="...">`) na HTML stránce. Funguje podle následujících pravidel:
getDomain(int $level = 2): string .[method]
-------------------------------------------
Vrací pravou či levou část hostitele. Takto funguje, pokud host je `www.nette.org`:


resolve(string $reference): UrlImmutable .[method]{data-version:3.3.2}
----------------------------------------------------------------------
Odvozuje absolutní URL stejným způsobem, jakým prohlížeč zpracovává odkazy (`<a href="...">`) na HTML stránce. Funguje podle následujících pravidel:
- pokud je odkaz absolutní URL (obsahuje schéma), použije se beze změny
- pokud odkaz začíná `//`, převezme se pouze schéma z aktuální URL
- pokud odkaz začíná `/`, vytvoří se absolutní cesta od kořene domény
Expand All @@ -174,14 +208,10 @@ echo $url->resolve('/bar'); // 'https://example.com/bar'
echo $url->resolve('sub/page.html'); // 'https://example.com/path/sub/page.html'
```

Třída `UrlImmutable` implementuje rozhraní `JsonSerializable` a má metodu `__toString()`, takže objekt lze vypsat nebo použít v datech předávaných do `json_encode()`.

```php
echo $url;
echo json_encode([$url]);
```

Metoda `isEqual(string|Url $anotherUrl): bool` ověří, zda jsou dvě URL shodné.
isEqual(string|Url $anotherUrl): bool .[method]
-----------------------------------------------
Ověří, zda jsou dvě URL shodné.


UrlScript
Expand Down

0 comments on commit 1ea5cb5

Please sign in to comment.