码迷,mamicode.com
首页 > Web开发 > 详细

ThinkPHP开发笔记-控制器

时间:2015-05-30 10:42:02      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

1、下面就是一个典型的控制器类的定义:

<?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‘]

 

ThinkPHP开发笔记-控制器

标签:

原文地址:http://www.cnblogs.com/NaughtyBaby/p/4539914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!