ThinkPHP中U方法的使用浅析


Posted in PHP onJune 13, 2014

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

U('[项目://][路由@][分组名-模块/]操作? 参数1=值1[&参数N=值N]')
或者用数组的方式传入参数:
U('[项目://][路由@][分组名-模块/]操作',array('参数1'=>'值1' [,'参数N'=>'值N']))

如果不定义项目和模块的话 就表示当前项目和模块名称,下面是一些简单的例子:

U('Myapp://User/add') // 生成Myapp项目的User模块的add操作的URL地址
U('Blog/read?id=1') // 生成Blog模块的read操作并且id为1的URL地址
U('Admin-User/select') // 生成Admin分组的User模块的select操作的URL地址

参数请确保使用 ?id=1&name=tp或者数组的方式来定义,虽然有些情况下U('Blog/read/id/1')和U('Blog/read?id=1')的效果一样,但是在不同的URL设置情况下,会导致解析的错误。

根据项目的不同URL设置,同样的U方法调用可以智能地对应产生不同的URL地址效果,例如针对U('Blog/read?id=1')这个定义为例。

如果当前URL设置为普通模式的话,最后生成的URL地址是:
HTUhttp://<serverName>/index.php?m=Blog&a=read&id=1UTH

如果当前URL设置为PATHINFO模式的话,同样的方法最后生成的URL地址是:
HTUhttp://<serverName>/index.php/Blog/read/id/1UTH

如果当前URL设置为REWRITE模式的话,同样的方法最后生成的URL地址是:
HTUhttp://<serverName>/Blog/read/id/1UTH

如果当前URL设置为REWRITE模式,并且设置了伪静态后缀为.html的话,同样的方法最后生成的URL地址是:
HTUhttp://<serverName>/Blog/read/id/1.htmlUTH

此外,U方法还可以支持路由,如果我们定义了一个名称为View的路由,指向Blog模块的read操作,参数是id,那么U('View@?id=1')生成的URL地址是:
HTUhttp://<serverName>/index.php/View/id/1UT

注意:U方法的路由支持 仅支持简单路由,不支持泛路由和正则路由

PHP 相关文章推荐
PHP 学习路线与时间表
Feb 21 PHP
PHP 开发环境配置(Zend Server安装)
Apr 28 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
Dec 19 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
Mar 20 PHP
php实例分享之mysql数据备份
May 19 PHP
Thinkphp模板中截取字符串函数简介
Jun 17 PHP
PHP中的闭包(匿名函数)浅析
Feb 07 PHP
PHP Streams(流)详细介绍及使用
May 12 PHP
php自定义类fsocket模拟post或get请求的方法
Jul 31 PHP
老生常谈PHP面向对象之解释器模式
May 17 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
PHP实现时间日期友好显示实现代码
Sep 08 PHP
PHP实现单例模式最安全的做法
Jun 13 #PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 #PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 #PHP
PHP中多维数组的foreach遍历示例
Jun 13 #PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
Jun 13 #PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 #PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 #PHP
You might like
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
Js实现动态添加删除Table行示例
2014/04/14 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
在React 组件中使用Echarts的示例代码
2017/11/08 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
深入浅析python with语句简介
2018/04/11 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
Python: 传递列表副本方式
2019/12/19 Python
python 动态渲染 mysql 配置文件的示例
2020/11/20 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
Does C# support multiple inheritance? (C#支持多重继承吗)
2012/01/04 面试题
C#和SQL Server的面试题
2016/08/12 面试题
歌咏比赛口号大全
2015/12/25 职场文书
德劲DE1108畅想
2021/04/22 无线电
Golang数据类型和相互转换
2022/04/12 Golang