Práce s URL – Nette\Http\Url

Třída Nette\Http\Url zapouzdřuje jakéhokoliv URL dle RFC 3986 a umožňuje jednoduchou manipulaci s jeho částmi

Jednotlivé části URL zachycuje tento obrázek:

scheme  user  password  host  port  basePath   relativeUrl
   |      |      |        |      |    |             |
 /--\   /--\ /------\ /-------\ /--\/--\/----------------------------\
 http://john:x0y17575@nette.org:8042/en/manual.php?name=param#fragment
        \__________________________/\____________/^\________/^\______/
                     |                     |           |         |
                 authority               path        query    fragment

Použití je pak intuitivní:

use Nette\Http\Url;

$url = new Url('http://nette.org/cs/dokumentace?action=history#footer');

echo $url->absoluteUrl; // nebo přímo echo $url; vrací celou vstupní URL
echo $url->scheme; // http
echo $url->authority; // nette.org
echo $url->hostUrl; // http://nette.org
echo $url->path; // /cs/dokumentace
echo $url->query; // action=history
echo $url->fragment; // footer

Kromě URL schématu http je možné používat i další, například https, file nebo ftp.

Části URL lze pochopitelně i měnit.

$url = new Url('http://nette.org/cs/dokumentace?action=history#footer');
$url->path = '/';
$url->appendQuery('page=1');
echo $url; // http://nette.org/?action=history&page=1#footer

Metoda canonicalize() převede URL na kanonickou formu.

Nette\Http\UrlScript

Třída UrlScript je potomkem Url, která navíc indikuje, kterou část URL tvoří cesta k aktuálně spuštěnému skriptu. Používá se uvnitř třídy Nette\Http\Request.

http://nette.org/admin/script.php/pathinfo/?name=param#fragment
                \_______________/\________/
                       |              |
                  scriptPath       pathInfo