在代码中构建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中文网其他相关文章!