ThinkPHP开发笔记-控制器
2015-05-30 10:21
519 查看
1、下面就是一个典型的控制器类的定义:
当访问
2、Action参数绑定。参数绑定功能默认是开启的,原理是把URL中的参数和操作方法中的参数进行绑定。参数绑定有两种方式:按照变量名绑定和按照变量顺序绑定。
(1)默认的参数绑定方式是按照变量名进行绑定,例如,我们给Blog控制器定义了个操作方法archive方法:
URL的访问地址是:
按照变量名进行参数绑定的参数必须和URL中传入的变量名称一致,但是参数顺序不需要一致。
如果使用下面的URL地址进行访问,参数绑定仍然有效:
(2)按变量顺序绑定。这种情况下URL地址中的参数顺序非常重要,不能随意调整。要按照变量顺序进行绑定,必须先设置
操作方法的定义不需要改变,URL的访问地址改成:
如果操作方法定义都不带任何参数,可以关闭参数绑定功能:
3、URL生成。为了配合所使用的URL模式,需要根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。U方法的定义规则如下:
地址表达式、参数、伪静态后缀的格式请参考文档:http://document.thinkphp.cn/manual_3_2.html#url_build
根据项目的不同URL设置,同样的U方法调用可以智能地对应产生不同的URL地址效果,例如对于:
如果当前URL设置为普通模式的话,最后生成的URL地址是:
如果当前URL设置为PATHINFO模式的话,同样的方法最后生成的URL地址是:
如果当前URL设置为REWRITE模式的话,同样的方法最后生成的URL地址是:
如果当前URL设置为REWRITE模式,并且设置了伪静态后缀为.html的话,同样的方法最后生成的URL地址是:
URL模式的介绍请参考文档:http://document.thinkphp.cn/manual_3_2.html#url
3、获取变量。虽然你仍然可以在开发过程中使用传统方式获取各种系统变量,例如:
但是我们不建议直接使用传统方式获取,因为没有统一的安全处理机制,后期如果调整的话,改起来会比较麻烦。所以,更好的方式是在框架中统一使用I函数进行变量获取和过滤。I方法是ThinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,我们以GET变量类型为例,说明下I方法的使用:
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function hello(){ echo 'hello,thinkphp!'; } } ?>
当访问
http://serverName/index.php/Home/Index/hello后会输出:
hello,thinkphp!
2、Action参数绑定。参数绑定功能默认是开启的,原理是把URL中的参数和操作方法中的参数进行绑定。参数绑定有两种方式:按照变量名绑定和按照变量顺序绑定。
(1)默认的参数绑定方式是按照变量名进行绑定,例如,我们给Blog控制器定义了个操作方法archive方法:
namespace Home\Controller; use Think\Controller; class BlogController extends Controller{ public function archive($year='2013',$month='01'){ echo 'year='.$year.'&month='.$month; } }
URL的访问地址是:
http://serverName/index.php/Home/Blog/archive/year/2013/month/11
按照变量名进行参数绑定的参数必须和URL中传入的变量名称一致,但是参数顺序不需要一致。
如果使用下面的URL地址进行访问,参数绑定仍然有效:
http://serverName/index.php/Home/Blog/archive/month/11/year/2013 http://serverName/index.php?s=/Home/Blog/archive/year/2013/month/11 http://serverName/index.php?c=Blog&a=archive&year=2013&month=11
(2)按变量顺序绑定。这种情况下URL地址中的参数顺序非常重要,不能随意调整。要按照变量顺序进行绑定,必须先设置
URL_PARAMS_BIND_TYPE为1:
'URL_PARAMS_BIND_TYPE' => 1, // 设置参数绑定按照变量顺序绑定
操作方法的定义不需要改变,URL的访问地址改成:
http://serverName/index.php/Home/Blog/archive/2013/11
如果操作方法定义都不带任何参数,可以关闭参数绑定功能:
'URL_PARAMS_BIND' => false
3、URL生成。为了配合所使用的URL模式,需要根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。U方法的定义规则如下:
U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])
地址表达式、参数、伪静态后缀的格式请参考文档:http://document.thinkphp.cn/manual_3_2.html#url_build
根据项目的不同URL设置,同样的U方法调用可以智能地对应产生不同的URL地址效果,例如对于:
U('Blog/read?id=1');
如果当前URL设置为普通模式的话,最后生成的URL地址是:
http://serverName/index.php?m=Blog&a=read&id=1
如果当前URL设置为PATHINFO模式的话,同样的方法最后生成的URL地址是:
http://serverName/index.php/Home/Blog/read/id/1
如果当前URL设置为REWRITE模式的话,同样的方法最后生成的URL地址是:
http://serverName/Home/Blog/read/id/1
如果当前URL设置为REWRITE模式,并且设置了伪静态后缀为.html的话,同样的方法最后生成的URL地址是:
http://serverName/Home/Blog/read/id/1.html
URL模式的介绍请参考文档:http://document.thinkphp.cn/manual_3_2.html#url
3、获取变量。虽然你仍然可以在开发过程中使用传统方式获取各种系统变量,例如:
$id = $_GET['id']; // 获取get变量 $name = $_POST['name']; // 获取post变量 $value = $_SESSION['var']; // 获取session变量 $name = $_COOKIE['name']; // 获取cookie变量 $file = $_SERVER['PHP_SELF']; // 获取server变量
但是我们不建议直接使用传统方式获取,因为没有统一的安全处理机制,后期如果调整的话,改起来会比较麻烦。所以,更好的方式是在框架中统一使用I函数进行变量获取和过滤。I方法是ThinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,我们以GET变量类型为例,说明下I方法的使用:
echo I('get.id'); // 相当于 $_GET['id'] echo I('get.name'); // 相当于 $_GET['name']
相关文章推荐
- ubuntu ntp时间同步服务器搭建与使用
- PHP自动化白盒审计技术与实现
- 马哥教育第二十四ftp协议、vsftpd的高级应用、rpc概念及nfs的基本应用、samba及其基本应用
- 使用php实现文件下载
- 使用PHP自带的filter函数进行数据校验
- PHP创建与解析 XML 1 (36)
- php绘制柱状图
- 《Yaf零基础学习总结》系列技术文章整理收藏
- ThinkPHP开发笔记-视图
- PHP: 深入了解一致性哈希
- PHP面向对象基础知识总结
- 非常实用的10个PHP高级应用技巧
- vsftpd案例详解分析
- ThinkPHP学习笔记 实例化模型的四种方法
- PHP开发程序应该注意的42个优化准则
- ThinkPHP分页
- thinkphp对数据库操作有哪些内置函数
- ThinkPHP开发笔记-模型
- PHP cURL初始化和执行方法入门级代码
- 初学PHP,做了一个网页解密游戏