cmsx/url

CMSx URL 组件

dev-master 2014-05-21 19:35 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:33:35 UTC


README

术语

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

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

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

可以作为参数指定锚点(例如 #anchor)或文件名(例如 file.txt),它们将作为参数可用,但在生成字符串时始终位于末尾,并且不会以 / 结尾。

URL 解析

一切从创建 URL 对象开始。解析地址发生在调用 load() 时,可以传递任何 URL 部分集合作为参数。可以在构造函数中直接传递相同的参数集。

以下调用具有相同的结果

$u = new URL();
$u->load('/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'));

唯一的区别在于:如果不传递参数调用 load(),对象将加载当前 URL,而如果没有参数调用构造函数,将创建一个空对象。

参数和参数

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

  • hasArgument($num) - 检查是否存在参数;
  • hasParameter($name) - 检查是否存在参数;
  • getArgument($num, $default = false) - 获取参数值。如果不存在 - 返回 $default;
  • getParameter($name, $filter = null, $default = false) - 获取参数值。如果不存在 - 返回 $default。$filter - 检查值,可以是正则表达式或任何 callable;
  • getArguments() - 获取所有参数的数组;
  • getParameters() - 获取所有参数的数组。

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

  • cleanArguments($array = null) - 清除参数。在 $array 中可以直接传递新的参数数组;
  • cleanParameters($array = null) - 清除参数。在 $array 中可以直接传递新的参数数组;
  • setArgument($num, $value = null) - 设置参数值。如果 $value = null,则删除参数;
  • setParameter($name, $value = null) - 设置参数值。如果 $value = null,则删除参数;
  • addArgument($arg) - 添加参数;
  • addParameter($name, $mixed) - 添加参数。$mixed - int|string|array;
  • addArguments($mixed, $_) - 添加参数。可以一次性通过字符串或数组传递多个参数;
  • addParameters($array, $_) - 添加参数。可以一次性传递多个数组;

URL 显示

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

  • toString() - 返回地址字符串;
  • toHTML($text = null, $attr = null, $target = null) - 返回 HTML 链接。$text - 链接文本,$attr - A 标签的属性数组或用作 class="$attr" 的字符串。$target - target 属性。