在程式碼中建構URL時,您可以使用字串連接的方式收集所有字串:
<code class="language-php">$url = $domain.'/index.php?option='.$option.'&view='.$view.'¶m1='.$value1;</code>
對於短字串,這種方法甚至很方便。但是,如果參數很多或需要在過程中進行標準化/清理,那麼就不那麼方便和直觀了。例如,URL的一部分可能包含前導斜杠(URL片段開頭處的斜杠),而請求的傳入域名也可能以斜杠結尾,因此我們在中間某個位置得到一個帶有雙斜杠的錯誤URL ……
為了標準化和統一URL檢索任務,Joomla提供了JoomlaUriUri類別。在Joomla 1.6及更早版本中,它被稱為JUri。此類別依據RFC3986標準處理URL,並負責解析URL的各個部分或從各個部分組裝URL。
<code class="language-php">use Joomla\Uri\Uri; $url = 'https://web-tolk.ru/dev/biblioteki?param=value'; $uri = new Uri($url); // 此处输出'value' echo $uri->getVar('param');</code>
您可能會說,是的,有一個原生的PHP函數parse_url
…但是Uri類確保了對URL中UTF-8字符的安全操作,包括西里爾字母域名。為了避免自己編寫各種檢查,您可以使用Joomla核心功能。
這裡也很簡單:
<code class="language-php">use Joomla\Uri\Uri; $uri = new Uri; $uri->setHost('web-tolk.ru'); $uri->setScheme('https'); // setPath()以前导斜杠开头 $uri->setPath('/dev/biblioteki'); // GET参数可以作为数组传递 $vars = [ 'param1' => 'value1', 'param2' => 'value2', 'param3' => 'value3', ]; $uri->setQuery($vars); // 将URL作为字符串输出 echo $uri->toString();</code>
Joomla中Uri類別的層次結構設計使得getter方法位於AbstractUri類別中,而setter方法位於Uri類別中。可以在libraries/vendor/joomla/uri/src/Uri.php檔案中查看setter方法。可以在libraries/vendor/joomla/uri/src/AbstractUri.php檔案中查看getter方法。
如果您使用PHPStorm,那麼它完全了解Joomla,並會告訴您所需的一切。
您可以參考舊的文件頁面,該頁面在很大程度上仍然適用,並已針對命名空間的使用進行了調整。
Uri結構:
<code> foo://example.com:8042/over/there?name=ferret#nose \_/ \______________/\_________/ \_________/ \__/ | | | | | scheme authority path query fragment</code>
以上是Joomla 提示:使用 Joomla\Uri\Uri 類別建立 URL。的詳細內容。更多資訊請關注PHP中文網其他相關文章!