U函数的作用是根据当前的URL设置生成对应的URL地址,使用U函数可以确保项目在移植过程中不受环境的影响。

U方法的定义规则如下(方括号内参数根据实际应用决定):

U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])

其中地址表达式的格式定义如下:

[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...

模块/控制器如果与当前模块、控制器相同的话可以省略。

参数值既可以通过'地址表达式'传递也可以通过'参数'传递,而通过'参数'传递时既可以是字符串也可以是数组,所以下面三个URL地址是等效的:

U('blog/read?id=5&stu=0')
U('blog/read','id=5&stu=0')
U('blog/read',array('id=>5','stu=>0'))

但下面的表达式是错误的:

U('blog/read/id/5/stu/0')

另外,U函数会自动识别当前URL模式,并按当前URL模式生成URL地址。

实例与说明

假设当前URL地址是 http://www.bnzoo.com/Home/Index/index,现在要访问 http://www.bnzoo.com/Home/Index/text/id/25/ty/1,U函数表达如下:

//下面三个表达是等效的
U('text?id=25&ty=1')
U('text','id=25&ty=1')
U('text',array('id=>25','ty=>1'))

访问 http://www.bnzoo.com/Home/Form/text/id/25/ty/1,U函数表达如下:

//下面三个表达是等效的
U('Form/text?id=25&ty=1')
U('Form/text','id=25&ty=1')
U('Form/text',array('id=>25','ty=>1'))

访问 http://www.bnzoo.com/Admin/Form/text/id/25/ty/1,U函数表达如下:

//下面三个表达是等效的
U('Admin/Form/text?id=25&ty=1')
U('Admin/Form/text','id=25&ty=1')
U('Admin/Form/text',array('id=>25','ty=>1'))

如果www.bnzoo.com和admin.bnzoo.com都指向当前应用的话,想通过 admin.bnzoo.com 访问 Admin/Form/text/id/25/ty/1,即访问 http://admin.bnzoo.com/Admin/Form/text/id/25/ty/1,U函数表达如下:

//下面三个表达是等效的
U('Admin/Form/text@admin.bnzoo.com?id=25&ty=1')
U('Admin/Form/text@admin.bnzoo.com','id=25&ty=1')
U('Admin/Form/text@admin.bnzoo.com',array('id=>25','ty=>1'))

如果设置了路由,U函数也能支持路由。比如我们定义一个路由规则:

'text/:id\d'=>'Index/text'

U函数下面的表达都是可以的:

U('/text/25')
U('Index/text?id=25')

假设当前地址是 http://www.bnzoo.com/Home/Index/index,那么它们生成的URL地址分别是:

http://www.bnzoo.com/Home/text/25
http://www.bnzoo.com/Home/Index/text/id/25

Thinkphp中的U函数(Thinkphp3.2.3版本)的更多相关文章

  1. Thinkphp中的 I 函数(Thinkphp3.2.3版本)

    I 函数的作用是获取系统变量,必要时还可以对变量值进行过滤及强制转化,I 函数的语法格式: I('变量类型.变量名/修饰符',['默认值'],['过滤方法或正则'],['额外数据源']) 一.获取变量 ...

  2. Thinkphp中的A 函数(Thinkphp3.2.3版本)

    A函数是TP中实例化控制器的一个快捷函数,它的语法结构如下: A('模块/控制器') //当控制器层名称不是 Controller 时须这样写 A('模块/控制器','控制器层名称') 如果要调用的控 ...

  3. ThinkPHP中的快捷函数小结

    U() 制作url地址的快捷函数 C(名称) 获得配置变量(convertion.php config.php)信息C(名称,值) 设置配置变量信息 L() 获得语言变量信息E() 给页面输出错误信息 ...

  4. thinkphp3.1课程 1-2 thinkphp中入口文件的实质是什么

    thinkphp3.1课程 1-2 thinkphp中入口文件的实质是什么 一.总结 一句话总结:在thinkphp中,我们访问的始终是入口文件,并没有主动去访问任何一个其他文件,只不过在入口文件体内 ...

  5. Thinkphp模板中使用自定义函数的方法

    注意:自定义函数要放在项目应用目录/common/common.php中. 这里是关键. 模板变量的函数调用格式:{$varname|function1|function2=arg1,arg2,### ...

  6. 关于thinkphp3.2中的U函数使用的是二级域名但是U函数生成的还是WWW开头的域名

    关于thinkphp3.2中的U函数使用的是二级域名但是U函数生成的还是WWW开头的域名 查看代码是由于U函数中对开启 APP_SUB_DOMAIN_DEPLOY  子域名部署 加的额外设置 如果你使 ...

  7. thinkphp模板中使用自定义函数

    注意:自定义函数要放在项目应用目录/common/common.php中. 这里是关键. 模板变量的函数调用格式:{$varname|function1|function2=arg1,arg2,### ...

  8. thinkphp中的内置操作数据库与mysql中的函数汇总

    8.4.4 Model类getModelName() 获取当前Model的名称getTableName() 获取当前Model的数据表名称switchModel(type,vars=array()) ...

  9. 封装一个函数,在ThinkPHP中一定程度上取代success和error

    1.下载jq2.下载layer3.根据自己的项目配置,将上述2文件放到样式目录中4.在Application/Common/function.php中添加如下代码function msg($msg,$ ...

随机推荐

  1. 【TensorFlow随笔】关于一个矩阵与多个矩阵相乘的问题

    问题描述: Specifically, I want to do matmul(A,B) where  'A' has shape (m,n)  'B' has shape (k,n,p) and t ...

  2. c语言中宏定义和常量定义的区别

    他们有共同的好处就是"一改全改,避免输入错误"哪两者有不同之处吗?有的. 主要区别就在于,宏定义是在编译之前进行的,而const是在编译阶段处理的 宏定义不占用内存单元而const ...

  3. c 语言typedef 和 define的使用和区别

    #define是C的指令,用于为各种数据类型定义别名,与typedef 类似,但是有一下几点不同 1,typedef仅限于为类型定义符号名称,而#define不仅可以为类型定义符号名称,也能为数值定义 ...

  4. Java 10 的 10 个新特性,将彻底改变你写代码的方式!

    Java 9才发布几个月,很多玩意都没整明白,现在Java 10又快要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK ...

  5. angular2 学习笔记 ( translate, i18n 翻译 )

    更新 : 2017-06-17 <h1 i18n="site header|An introduction header for this sample">Hello ...

  6. JavaScript简单重写构造器的原型

    //简单重写原型对象: //一个构造函数Person function Person(){ } //重写Person的原型 //把Person的原型赋值给一个新的对象 是我们重写的过程 Person. ...

  7. 日推20单词 Day02

    1.distinguish v. 区别,辨别 2.tension n. 紧张,不安 3.sympathy n. 同情,慰问 4.admiration n. 羡慕 5.jealousy n. 嫉妒 6. ...

  8. python CSRF跨站请求伪造

    python CSRF跨站请求伪造 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  9. java集合 源码解析 学习手册

    学习路线: http://www.cnblogs.com/skywang12345/ 总结 1 总体框架 2 Collection架构 3 ArrayList详细介绍(源码解析)和使用示例 4 fai ...

  10. for/range/break/continue

    #for智能循环 members=['武林至尊','宝刀屠龙','号令天下','莫敢不从'] for every in members:     print(every,len(every)) 武林至 ...