SQRT.pro URL 是 SQRT 框架的一部分

v0.1.0 2015-03-24 10:18 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:59:30 UTC


README

Build Status Coverage Status Latest Stable Version License

术语

由符号 / 分隔的 URL 部分称为参数。例如:/my/cool/page/。在这种情况下,参数的顺序很重要,因为寻址是从 1 开始按编号进行的。即解析上述示例后,将得到以下参数集

1 => 'my'
2 => 'cool'
3 => 'page'

如果需要传递命名参数,则将其以 "名称:值" 的形式传递,例如:/id:12/height:yahoo/。在这种情况下,参数的顺序无关紧要。参数和参数可以组合使用,但参数始终位于 URL 的末尾。例如:/my/pretty/what:page/what:site/

如果指定了具有相同名称的多个值,则它们被视为数组。例如:/id:10/id:11/id:12/

此外,还可以使用 "文件名",例如 /hello/world.txt。它与属性相关联,但不包含在属性列表中。

URL 解析

一切从创建 URL 对象开始。解析地址发生在调用 parse() 时,可以传递字符串(完整或绝对路径)或数组(将作为参数集处理)。同样,可以在构造函数中传递参数,允许传递多个对象作为参数。

以下调用具有相同的结果

$u = new URL();
$u->parse('/my/page/id:12/hello:world/');
$u = new URL('/my/page/id:12/hello:world/'); 
$u = new URL('my/page', array('id'=>12, 'hello'=>'world'));
$u = new URL('my', 'page/id:12', array('hello'=>'world'));

从地址中获取数据

过滤输入数据

在大多数用于从地址获取数据的函数中,传递参数 $filter - 它允许检查和过滤从地址获取的数据。过滤器可以是可调用的、正则表达式或包含有效值的数组。如果没有值或它不符合过滤器,则返回 $default。

关于过滤的更多信息

参数和参数

地址解析后,URL 对象提供几种访问参数和参数的方法

  • hasArgument($num) - 检查是否存在参数;
  • hasParameter($name) - 检查是否存在参数;
  • getArgument($num, $filter = null, $default = false) - 获取参数值,如果已设置,否则返回 $default;
  • getParameter($name, $filter = null, $default = false) - 获取参数值,如果已设置,否则返回 $default;
  • getParameterAsArray($name, $filter = null, $default = array()) - 如果设置了值,则将参数作为数组获取,否则返回 $default;
  • getArguments() - 获取所有参数的数组;
  • getParameters() - 获取所有参数的数组。

要更改参数或参数,可以使用以下功能

  • removeArguments(array $arguments = null) - 清除参数。在 $arguments 中可以直接传递新的参数数组;
  • removeParameters(array $parameters = null) - 清除参数。在 $parameters 中可以直接传递新的参数数组;
  • setArgument($num, $value = null) - 设置参数值。
  • setParameter($name, $value = null) - 设置参数值。
  • addArgument($arg) - 添加参数;
  • addParameter($name, $parameter) - 添加参数;
  • addArguments($mixed, $_) - 添加参数。可以直接通过字符串或数组传递多个参数;
  • addParameters($array, $_) - 添加参数。可以直接传递多个数组;

文件名和扩展名

如果指定了文件名,则可以访问它

  • getFileName($strict = false) - 获取文件名。如果未指定,则取最后一个参数的值。
  • getFileExtension($default = false) - 获取文件扩展名或 $default 如果未指定。

主机、方案和子域

如果解析地址时指定了绝对路径,则 URL 对象包含有关域和方案的信息。如果没有传递地址,则默认域为 https://

访问数据

  • getHost() - 域。默认为 "localhost";
  • getScheme() - 协议。默认为 "http";
  • hasSubDomain($level) - 检查是否存在指定级别的子域。地址从右向左,从 "1" 开始。
  • getSubDomain($level, $filter = null, $default = false) - 获取子域的值或如果未设置则返回 $default。

不可变对象

如果需要基于基本地址生成新的链接而不更改基本对象,可以使用 URLImmutable 类 - 当调用更改地址的方法时,返回新的对象,保持原始对象不变。

URL 显示

URL 对象有两种输出地址的方式

  • asString($absolute = false) - 返回带有相对或绝对地址的字符串;
  • asTag($value = null, $attr = null, $target = null, $absolute = false) - 生成 HTML 链接对象。 关于 SQRT\Tag 的更多信息

更多示例请参阅测试 /tests/unit/...